@kodiak-finance/orderly-chart 2.8.21-alpha.0 → 2.8.21-beta.3
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/dist/index.js +24 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/tailwindcss@3.4.17_ts-node@10.9.2_@swc+core@1.13.2_@swc+helpers@0.5.17__@types+node@24.3.1_typescript@5.8.3_/node_modules/tailwindcss/lib/util/createPlugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.17_ts-node@10.9.2_@swc+core@1.13.2_@swc+helpers@0.5.17__@types+node@24.3.1_typescript@5.8.3_/node_modules/tailwindcss/lib/public/create-plugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.17_ts-node@10.9.2_@swc+core@1.13.2_@swc+helpers@0.5.17__@types+node@24.3.1_typescript@5.8.3_/node_modules/tailwindcss/plugin.js","../src/utils/yTickFormatter.ts","../src/orderly/customTooltip.tsx","../src/utils/theme.ts","../src/orderly/useColors.ts","../src/orderly/pnlBar.tsx","../src/orderly/xAxisLabel.tsx","../src/orderly/pnlLine.tsx","../src/orderly/pnlArea.tsx","../src/orderly/chartEmptyState.tsx","../src/orderly/combinedPnlChart.tsx","../src/orderly/combinedVolumeChart.tsx","../src/orderly/combinedFeesChart.tsx","../src/orderly/combinedPriceChart.tsx","../src/orderly/assetLine.tsx","../src/orderly/assetArea.tsx","../src/orderly/volBar.tsx","../src/orderly/unifiedSymbolChart.tsx","../src/tailwindcss/theme.ts"],"names":["plugin","numberToHumanStyle","Box","jsxs","Flex","jsx","Text","useMemo","useTranslation","Cross","useRef","ResponsiveContainer","cn","BarChart","Tooltip","CartesianGrid","ReferenceLine","Bar","Cell","YAxis","XAxis","XAxisLabel","CustomTooltip","useScreen","LineChart","Line","dataTransfer","useId","AreaChart","Fragment","Area","BarChartIcon","RoundedRectangle","CustomizedCross","ComposedChart","tickFormatter","formatValueWithSign","createCustomTooltip","calculateOptimalInterval","transformToCumulative"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import { numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\n\nexport const tickFormatter = (value: number) => {\n const absValue = Math.abs(value);\n const dp = absValue === 0 ? 0 : absValue <= 10 ? 2 : absValue <= 100 ? 1 : 0;\n const formatted = numberToHumanStyle(absValue, dp);\n return value < 0 ? `-${formatted}` : formatted;\n};\n","import { Box, Flex, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderlyChartTooltip = (props: {\n label: string;\n value: string | number;\n unit?: string;\n prefix?: React.ReactNode;\n titleClassName?: string;\n coloring?: boolean;\n dp?: number;\n rm?: number;\n}) => {\n const {\n label,\n value,\n prefix,\n unit = \"USDC\",\n coloring = false,\n dp,\n rm,\n } = props;\n return (\n <Box intensity={600} p={3} r=\"md\">\n <Flex direction={\"row\"} className={props.titleClassName}>\n {prefix}\n <Text.numeral\n unit={unit}\n as=\"div\"\n size=\"sm\"\n coloring={coloring}\n showIdentifier={coloring}\n unitClassName=\"oui-text-base-contrast-54 oui-ml-1\"\n weight=\"semibold\"\n rm={rm}\n dp={dp}\n >\n {value}\n </Text.numeral>\n </Flex>\n <Text size=\"2xs\" intensity={54} weight=\"semibold\">\n {label}\n </Text>\n </Box>\n );\n};\n","export const getThemeColors = () => {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n\n const colors = {\n primary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary\")\n ),\n primaryLight: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary-light\")\n ),\n secondary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-secondary\")\n ),\n success: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-success\")\n ),\n warning: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-warning\")\n ),\n danger: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-danger\")),\n info: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-info\")),\n loss: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-loss\")\n ),\n profit: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-profit\")\n ),\n };\n\n return colors;\n};\n\nconst convertToRGB = (color: string) => {\n return `rgb(${color.split(\" \").join(\",\")})`;\n};\n","import { useMemo } from \"react\";\nimport { getThemeColors } from \"../utils/theme\";\n\nexport const useColors = (colors?: { profit: string; loss: string }) => {\n const _colors = useMemo(() => {\n const themeColors = getThemeColors();\n return {\n profit: colors?.profit || themeColors.profit,\n loss: colors?.loss || themeColors.loss,\n primary: themeColors.primary,\n primaryLight: themeColors.primaryLight,\n };\n }, [colors]);\n\n return _colors;\n};\n","import React, { useRef } from \"react\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type PnLChartDataItem = {\n date: string;\n pnl: number;\n};\n\nexport type PnLChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: ReadonlyArray<PnLChartDataItem> | PnLChartDataItem[];\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst RoundedRectangle: React.FC<any> = (props) => {\n const { fill, x, y, width, height } = props;\n\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nexport const XAxisLabel: React.FC<any> = (props) => {\n const { x, y, stroke, payload, index, width, containerWidth } = props;\n const { t } = useTranslation();\n const _x =\n index === 0\n ? 48\n : containerWidth > 0\n ? containerWidth - 10\n : width + payload.offset;\n\n return (\n <g transform={`translate(${_x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor={index === 0 ? \"start\" : \"end\"}\n // textAnchor={\"start\"}\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : t(\"chart.now\")}\n </text>\n </g>\n );\n};\n\nconst CustomizedCross: React.FC<any> = (props) => {\n const { width, height, stroke, fill } = props;\n return (\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nexport const PnLBarChart: React.FC<PnLChartProps> = (props) => {\n const { invisible, data, responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n const widthRef = useRef<number>(0);\n return (\n <ResponsiveContainer\n className={cn(invisible && \"chart-invisible\")}\n onResize={(width) => {\n widthRef.current = width;\n }}\n {...responsiveContainerProps}\n >\n <BarChart\n data={data as any[]}\n margin={{ left: -10, top: 10, right: 10, bottom: 30 }}\n >\n {!invisible && (\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip />}\n />\n )}\n\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {!invisible && (\n <Bar dataKey=\"pnl\" shape={<RoundedRectangle />}>\n {data.map((entry, index) => {\n return (\n <Cell\n key={`cell-${index}`}\n fill={entry.pnl > 0 ? colors.profit : colors.loss}\n />\n );\n })}\n </Bar>\n )}\n\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickFormatter={(value) => tickFormatter(value)}\n tickLine={false}\n axisLine={false}\n dataKey={\"pnl\"}\n />\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel containerWidth={widthRef.current} />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const XAxisLabel = (props: any) => {\n const { x, y, stroke, payload, index } = props;\n const { t } = useTranslation();\n return (\n <g transform={`translate(${x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor=\"end\"\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : t(\"chart.now\")}\n </text>\n </g>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo, useRef } from \"react\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: any;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nconst dataTransfer = (data: any[]) => {\n const series: any[] = [];\n data?.reduce<any>((acc, item) => {\n acc += item.pnl;\n series.push({ ...item, pnl: acc, _pnl: item.pnl });\n return acc;\n }, 0);\n return series;\n};\n\nexport const PnlLineChart: React.FC<PnlLineChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n\n const { isMobile } = useScreen();\n\n const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n const chartComponent = (\n <LineChart\n data={data}\n margin={{ top: 20, right: 10, left: -10, bottom: 0 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"pnl\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {!props.invisible && (\n <Line\n type=\"natural\"\n dataKey=\"pnl\"\n stroke={colors.primary}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId, useMemo, useRef } from \"react\";\nimport {\n XAxis,\n YAxis,\n CartesianGrid,\n AreaChart,\n Area,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type PnlAreaChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: any;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nconst dataTransfer = (data: any[]) => {\n const series: any[] = [];\n data?.reduce<any>((acc, item) => {\n acc += item.pnl;\n series.push({ ...item, pnl: acc, _pnl: item.pnl });\n return acc;\n }, 0);\n return series;\n};\n\nexport const PnlAreaChart: React.FC<PnlAreaChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n\n const { isMobile } = useScreen();\n\n const colorId = useId();\n\n const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n const baseValue = useMemo(\n () => data.map((item) => item.pnl).sort((a, b) => a - b)[0] || 0,\n [data],\n );\n\n const chartComponent = (\n <AreaChart\n data={data}\n margin={{ top: 20, right: 10, left: -10, bottom: 0 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"pnl\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {!props.invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor={colors.primary} offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor={colors.primary} offset=\"100%\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"pnl\"\n stroke={colors.primary}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n baseValue={baseValue || 0}\n />\n </>\n )}\n </AreaChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","import React from \"react\";\nimport { Box, Flex, Text, cn } from \"@kodiak-finance/orderly-ui\";\nimport { BarChartIcon } from \"@kodiak-finance/orderly-ui\";\n\nexport type ChartEmptyStateProps = {\n title?: string;\n description?: string;\n height?: string;\n className?: string;\n};\n\n/**\n * Reusable empty state component for charts when no data is available.\n * Displays an icon, title, and optional description in a centered layout.\n *\n * @example\n * <ChartEmptyState\n * title=\"No Trading Activity\"\n * description=\"No trades were recorded for the selected period\"\n * height=\"300px\"\n * />\n */\nexport const ChartEmptyState: React.FC<ChartEmptyStateProps> = ({\n title = \"No Data Available\",\n description = \"No data to display for the selected period\",\n height = \"300px\",\n className,\n}) => {\n return (\n <Box\n className={cn(\n \"oui-w-full oui-flex oui-items-center oui-justify-center oui-bg-base-8\",\n className,\n )}\n style={{ height }}\n >\n <Flex\n direction=\"column\"\n itemAlign=\"center\"\n gap={3}\n className=\"oui-text-center\"\n >\n <BarChartIcon />\n <Text\n as=\"div\"\n size=\"sm\"\n weight=\"semibold\"\n className=\"oui-text-base-contrast-100\"\n >\n {title}\n </Text>\n <Text as=\"div\" size=\"xs\" className=\"oui-text-base-contrast-54\">\n {description}\n </Text>\n </Flex>\n </Box>\n );\n};\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedPnLChartDataItem = {\n date: string;\n pnl: number;\n};\n\nexport type CombinedPnLChartProps = {\n data: ReadonlyArray<CombinedPnLChartDataItem> | CombinedPnLChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n colors?: {\n profit: string;\n loss: string;\n };\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n showCumulative?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value.toFixed(2)}`;\n};\n\nconst getValueColor = (value: number, colors: any): string => {\n if (value === 0) return \"inherit\"; // Neutral color for zero\n return value > 0 ? colors.profit : colors.loss;\n};\n\nconst createCustomTooltip = (showCumulative: boolean) => {\n return (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n const colors = useColors();\n\n if (active && payload && payload.length >= 1) {\n // Get bar (period PnL) value\n const barData = payload.find((p) => p.dataKey === \"pnl\");\n const barValue = barData?.value ?? 0;\n\n const formattedDate = label;\n const barColor = getValueColor(barValue, colors);\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">{formattedDate}:</span>\n <span className=\"oui-font-semibold\" style={{ color: barColor }}>\n {formatValueWithSign(barValue)} USDC\n </span>\n </div>\n {showCumulative && (\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Cumulative:</span>\n <span className=\"oui-font-semibold\">\n {(() => {\n const lineData = payload.find(\n (p) => p.dataKey === \"cumulativePnL\",\n );\n const cumulativeValue = lineData?.value ?? 0;\n return formatValueWithSign(cumulativeValue);\n })()}{\" \"}\n USDC\n </span>\n </div>\n )}\n </Box>\n );\n }\n\n return null;\n };\n};\n\n/**\n * Calculates optimal x-axis interval based on data length and aggregation window.\n * Uses responsive spacing based on actual data size and screen size.\n */\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n // For desktop with small datasets, show all labels\n if (dataLength <= 12 && !isMobile) return 0;\n\n // Smart calculation based on actual data length\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n // Reduce target labels on mobile for more aggressive spacing\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n // For 15-min: aim for 6+ labels\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56; // ~12-hour spacing\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28; // ~7-hour spacing\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16; // ~4-hour spacing\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n // For hourly: aim for 6+ labels\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28; // ~daily spacing\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12; // ~12-hour spacing\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\n/**\n * Transform data to include cumulative PnL values\n */\nconst transformToCumulative = (\n data: ReadonlyArray<CombinedPnLChartDataItem> | CombinedPnLChartDataItem[],\n) => {\n let cumulative = 0;\n return (data as CombinedPnLChartDataItem[]).map((item) => {\n cumulative += item.pnl;\n return {\n ...item,\n cumulativePnL: cumulative,\n };\n });\n};\n\nexport const CombinedPnLChart: React.FC<CombinedPnLChartProps> = (props) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n showCumulative = true,\n } = props;\n\n const colors = useColors(props.colors);\n\n // Transform data to include cumulative values\n const transformedData = useMemo(() => transformToCumulative(data), [data]);\n\n // Calculate optimal x-axis interval\n const xAxisInterval = useMemo(() => {\n return calculateOptimalInterval(\n transformedData.length,\n aggregationWindow,\n isMobile,\n );\n }, [transformedData.length, aggregationWindow, isMobile]);\n\n // Calculate Y-axis domain with even spacing and proportional padding\n const yAxisDomain = useMemo(() => {\n if (transformedData.length === 0) return [0, 1];\n\n const pnlValues = transformedData.map((item) => item.pnl);\n const cumulativeValues = showCumulative\n ? transformedData.map((item) => item.cumulativePnL)\n : [];\n\n const valuesToConsider = showCumulative\n ? [...pnlValues, ...cumulativeValues, 0]\n : [...pnlValues, 0];\n\n const minValue = Math.min(...valuesToConsider);\n const maxValue = Math.max(...valuesToConsider);\n\n const range = maxValue - minValue;\n if (range === 0) return [0, 1];\n\n // Add 10% padding on each side\n const padding = range * 0.1;\n const lower = minValue - padding;\n const upper = maxValue + padding;\n\n // Round to nice numbers for even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n const step = Math.ceil((upper - lower) / 5 / magnitude) * magnitude;\n\n const roundedLower = Math.floor(lower / step) * step;\n const roundedUpper = Math.ceil(upper / step) * step;\n\n return [roundedLower, roundedUpper];\n }, [transformedData, showCumulative]);\n\n if (invisible || transformedData.length === 0) {\n return (\n <ChartEmptyState\n title=\"No P&L Data\"\n description=\"No profit and loss data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={transformedData}\n margin={{ left: 45, top: 10, right: 50, bottom: 20 }}\n syncId=\"symbol-performance\"\n >\n <defs>\n <linearGradient id=\"cumulativeGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor=\"#608CFF\" stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor=\"#608CFF\" stopOpacity={0} />\n </linearGradient>\n </defs>\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={createCustomTooltip(showCumulative)}\n />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine\n y={0}\n stroke=\"rgba(255,255,255,0.3)\"\n strokeWidth={2}\n strokeDasharray=\"4 4\"\n />\n\n {/* Unified Y-Axis for both bars and line */}\n <YAxis\n domain={yAxisDomain}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n width={45}\n />\n\n {/* X-Axis with smart interval spacing - professional approach */}\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={30}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n {/* Period PnL Bars */}\n <Bar\n dataKey=\"pnl\"\n shape={<RoundedRectangle />}\n minPointSize={1}\n isAnimationActive={false}\n >\n {transformedData.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={\n entry.pnl === 0\n ? \"rgba(255,255,255,0.2)\"\n : entry.pnl > 0\n ? colors.profit\n : colors.loss\n }\n />\n ))}\n </Bar>\n\n {/* Cumulative PnL Area with gradient fill */}\n {showCumulative && (\n <Area\n type=\"natural\"\n dataKey=\"cumulativePnL\"\n fill=\"url(#cumulativeGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n )}\n\n {/* Cumulative PnL Line */}\n {showCumulative && (\n <Line\n type=\"natural\"\n dataKey=\"cumulativePnL\"\n stroke={colors.primary}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n\n/**\n * Format Y-axis tick values with human-readable abbreviations (K, M, B, T)\n */\nfunction tickFormatter(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = Math.abs(value);\n\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n\n const sign = value < 0 ? \"-\" : \"\";\n const decimalPlaces = num <= 10 ? 1 : 0;\n const rounded = num.toFixed(decimalPlaces);\n\n return `${sign}${rounded}${abbreviations[index]}`;\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedVolumeChartDataItem = {\n date: string;\n volume: number;\n};\n\nexport type CombinedVolumeChartProps = {\n data:\n | ReadonlyArray<CombinedVolumeChartDataItem>\n | CombinedVolumeChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n colors?: {\n fill: string;\n };\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n showCumulative?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value}`;\n};\n\nconst createCustomTooltip = (showCumulative: boolean) => {\n return (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length >= 1) {\n const volumeData = payload.find((p) => p.dataKey === \"volume\");\n const volumeValue = volumeData?.value ?? 0;\n\n const formattedDate = label;\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">{formattedDate}:</span>\n <span className=\"oui-font-semibold\">\n {formatValueWithSign(volumeValue)} USDC\n </span>\n </div>\n {showCumulative && (\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Cumulative:</span>\n <span className=\"oui-font-semibold\">\n {(() => {\n const cumulativeData = payload.find(\n (p) => p.dataKey === \"cumulativeVolume\",\n );\n const cumulativeValue = cumulativeData?.value ?? 0;\n return formatValueWithSign(cumulativeValue);\n })()}{\" \"}\n USDC\n </span>\n </div>\n )}\n </Box>\n );\n }\n\n return null;\n };\n};\n\n/**\n * Calculates optimal x-axis interval based on data length and aggregation window.\n * Uses responsive spacing based on actual data size and screen size.\n */\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n // For desktop with small datasets, show all labels\n if (dataLength <= 12 && !isMobile) return 0;\n\n // Smart calculation based on actual data length\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n // Reduce target labels on mobile for more aggressive spacing\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56;\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16;\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12;\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\nconst transformToCumulative = (\n data:\n | ReadonlyArray<CombinedVolumeChartDataItem>\n | CombinedVolumeChartDataItem[],\n) => {\n let cumulative = 0;\n return (data as CombinedVolumeChartDataItem[]).map((item) => {\n cumulative += item.volume;\n return {\n ...item,\n cumulativeVolume: cumulative,\n };\n });\n};\n\nexport const CombinedVolumeChart: React.FC<CombinedVolumeChartProps> = (\n props,\n) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n showCumulative = false,\n } = props;\n\n const colors = useColors(\n props.colors\n ? { profit: props.colors.fill, loss: props.colors.fill }\n : undefined,\n );\n\n const transformedData = useMemo(() => transformToCumulative(data), [data]);\n\n const xAxisInterval = useMemo(\n () =>\n calculateOptimalInterval(\n transformedData.length,\n aggregationWindow,\n isMobile,\n ),\n [transformedData.length, aggregationWindow, isMobile],\n );\n\n const yAxisDomain = useMemo(() => {\n if (transformedData.length === 0) return [0, 1];\n\n const volumeValues = transformedData.map((item) => item.volume);\n const cumulativeValues = showCumulative\n ? transformedData.map((item) => item.cumulativeVolume)\n : [];\n\n const maxValue = Math.max(\n ...(showCumulative\n ? [...volumeValues, ...cumulativeValues]\n : volumeValues),\n 0,\n );\n\n // Volumes are always non-negative, so domain starts at 0\n const range = maxValue;\n if (range === 0) return [0, 1];\n\n // Add 10% padding\n const padding = range * 0.1;\n const upper = maxValue + padding;\n\n // Round to nice numbers for even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n const step = Math.ceil(upper / 5 / magnitude) * magnitude;\n const roundedUpper = Math.ceil(upper / step) * step;\n\n return [0, roundedUpper];\n }, [transformedData, showCumulative]);\n\n if (invisible || transformedData.length === 0) {\n return (\n <ChartEmptyState\n title=\"No Volume Data\"\n description=\"No trading volume data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={transformedData}\n margin={{ left: 45, top: 10, right: 50, bottom: 20 }}\n syncId=\"symbol-performance\"\n >\n <defs>\n <linearGradient id=\"volumeGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor=\"#00B49E\" stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor=\"#00B49E\" stopOpacity={0} />\n </linearGradient>\n </defs>\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={createCustomTooltip(showCumulative)}\n />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n <YAxis\n domain={yAxisDomain}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n width={45}\n />\n\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={30}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <Bar\n dataKey=\"volume\"\n shape={<RoundedRectangle />}\n minPointSize={1}\n isAnimationActive={false}\n >\n {transformedData.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={\n entry.volume === 0 ? \"rgba(255,255,255,0.2)\" : colors.profit\n }\n opacity={0.8}\n />\n ))}\n </Bar>\n\n {/* Cumulative Volume Area with gradient fill */}\n {showCumulative && (\n <Area\n type=\"natural\"\n dataKey=\"cumulativeVolume\"\n fill=\"url(#volumeGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n )}\n\n {/* Cumulative Volume Line */}\n {showCumulative && (\n <Line\n type=\"natural\"\n dataKey=\"cumulativeVolume\"\n stroke={colors.profit}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n\nfunction tickFormatter(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = Math.abs(value);\n\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n\n const sign = value < 0 ? \"-\" : \"\";\n const decimalPlaces = num <= 10 ? 1 : 0;\n const rounded = num.toFixed(decimalPlaces);\n\n return `${sign}${rounded}${abbreviations[index]}`;\n}\n\nfunction formatVolumeValue(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = value;\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n const decimalPlaces = num <= 10 ? 2 : num <= 100 ? 1 : 0;\n const rounded = parseFloat(num.toFixed(decimalPlaces));\n return `${rounded}${abbreviations[index]}`;\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedFeesChartDataItem = {\n date: string;\n fees: number;\n};\n\nexport type CombinedFeesChartProps = {\n data: ReadonlyArray<CombinedFeesChartDataItem> | CombinedFeesChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n colors?: {\n fill: string;\n };\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n showCumulative?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value.toFixed(2)}`;\n};\n\nconst createCustomTooltip = (showCumulative: boolean) => {\n return (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length >= 1) {\n const feesData = payload.find((p) => p.dataKey === \"fees\");\n const feesValue = feesData?.value ?? 0;\n\n const formattedDate = label;\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">{formattedDate}:</span>\n <span className=\"oui-font-semibold\">\n {formatValueWithSign(feesValue)} USDC\n </span>\n </div>\n {showCumulative && (\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Cumulative:</span>\n <span className=\"oui-font-semibold\">\n {(() => {\n const cumulativeData = payload.find(\n (p) => p.dataKey === \"cumulativeFees\",\n );\n const cumulativeValue = cumulativeData?.value ?? 0;\n return formatValueWithSign(cumulativeValue);\n })()}{\" \"}\n USDC\n </span>\n </div>\n )}\n </Box>\n );\n }\n\n return null;\n };\n};\n\n/**\n * Calculates optimal x-axis interval based on data length and aggregation window.\n * Uses responsive spacing based on actual data size and screen size.\n */\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n // For desktop with small datasets, show all labels\n if (dataLength <= 12 && !isMobile) return 0;\n\n // Smart calculation based on actual data length\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n // Reduce target labels on mobile for more aggressive spacing\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56;\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16;\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12;\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\nconst transformToCumulative = (\n data: ReadonlyArray<CombinedFeesChartDataItem> | CombinedFeesChartDataItem[],\n) => {\n let cumulative = 0;\n return (data as CombinedFeesChartDataItem[]).map((item) => {\n cumulative += item.fees;\n return {\n ...item,\n cumulativeFees: cumulative,\n };\n });\n};\n\nexport const CombinedFeesChart: React.FC<CombinedFeesChartProps> = (props) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n showCumulative = false,\n } = props;\n\n const colors = useColors(\n props.colors\n ? { profit: props.colors.fill, loss: props.colors.fill }\n : undefined,\n );\n\n const transformedData = useMemo(() => transformToCumulative(data), [data]);\n\n const xAxisInterval = useMemo(\n () =>\n calculateOptimalInterval(\n transformedData.length,\n aggregationWindow,\n isMobile,\n ),\n [transformedData.length, aggregationWindow, isMobile],\n );\n\n const yAxisDomainAndTicks = useMemo(() => {\n if (transformedData.length === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n const feesValues = transformedData.map((item) => item.fees);\n const cumulativeValues = showCumulative\n ? transformedData.map((item) => item.cumulativeFees)\n : [];\n\n const valuesToConsider = showCumulative\n ? [...feesValues, ...cumulativeValues, 0]\n : [...feesValues, 0];\n\n const minValue = Math.min(...valuesToConsider);\n const maxValue = Math.max(...valuesToConsider);\n\n const range = maxValue - minValue;\n if (range === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n // For fees (typically negative), add padding only on the lower side\n // Keep upper bound at 0 to minimize whitespace above the axis\n const padding = range * 0.1;\n const lower = minValue - padding;\n const upper = 0; // Fees bars go downward from 0\n\n // Calculate step size for nice, even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n let step = magnitude;\n const rangeWidth = Math.abs(upper - lower);\n\n // Find a nice step that gives us 4-6 tick marks with even spacing\n for (const divisor of [1, 2, 2.5, 5]) {\n const candidate = magnitude * divisor;\n const tickCount = Math.ceil(rangeWidth / candidate);\n if (tickCount >= 4 && tickCount <= 6) {\n step = candidate;\n break;\n }\n }\n\n // Generate evenly spaced ticks starting from lower, going up to 0\n const roundedLower = Math.floor(lower / step) * step;\n const ticks: number[] = [];\n for (let tick = roundedLower; tick < upper; tick += step) {\n ticks.push(Number(tick.toFixed(10))); // Remove floating point errors\n }\n // Always ensure 0 is included as the final tick\n ticks.push(0);\n\n return { domain: [roundedLower, 0], ticks };\n }, [transformedData, showCumulative]);\n\n if (invisible || transformedData.length === 0) {\n return (\n <ChartEmptyState\n title=\"No Fees Data\"\n description=\"No fees data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={transformedData}\n margin={{ left: 45, top: 10, right: 50, bottom: 20 }}\n syncId=\"symbol-performance\"\n >\n <defs>\n <linearGradient id=\"feesGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor=\"#FF6B6B\" stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor=\"#FF6B6B\" stopOpacity={0} />\n </linearGradient>\n </defs>\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={createCustomTooltip(showCumulative)}\n />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n <YAxis\n domain={yAxisDomainAndTicks.domain}\n ticks={yAxisDomainAndTicks.ticks}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n width={45}\n />\n\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={30}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <Bar\n dataKey=\"fees\"\n shape={<RoundedRectangle />}\n minPointSize={1}\n isAnimationActive={false}\n >\n {transformedData.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={entry.fees === 0 ? \"rgba(255,255,255,0.2)\" : colors.loss}\n opacity={0.8}\n />\n ))}\n </Bar>\n\n {/* Cumulative Fees Area with gradient fill */}\n {showCumulative && (\n <Area\n type=\"natural\"\n dataKey=\"cumulativeFees\"\n fill=\"url(#feesGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n )}\n\n {/* Cumulative Fees Line */}\n {showCumulative && (\n <Line\n type=\"natural\"\n dataKey=\"cumulativeFees\"\n stroke={colors.loss}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n\nfunction tickFormatter(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = Math.abs(value);\n\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n\n const sign = value < 0 ? \"-\" : \"\";\n const decimalPlaces = num <= 10 ? 1 : 0;\n const rounded = num.toFixed(decimalPlaces);\n\n return `${sign}${rounded}${abbreviations[index]}`;\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Line,\n Tooltip,\n CartesianGrid,\n Cross,\n ReferenceLine,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedPriceChartDataItem = {\n date: string;\n open: number | null;\n high: number | null;\n low: number | null;\n close: number | null;\n};\n\nexport type CombinedPriceChartProps = {\n data:\n | ReadonlyArray<CombinedPriceChartDataItem>\n | CombinedPriceChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length >= 1) {\n const data = payload[0].payload;\n\n // Check if price data is available\n const hasPrice = data.close !== null && data.close !== undefined;\n\n if (!hasPrice) {\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-text-base-contrast-54\">\n Price data unavailable\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2 oui-mt-1 oui-pt-2 oui-border-t oui-border-base-contrast-16\">\n <span className=\"oui-text-base-contrast-54\">Time:</span>\n <span className=\"oui-font-semibold\">{label}</span>\n </div>\n </Box>\n );\n }\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Open:</span>\n <span className=\"oui-font-semibold\">\n {data.open?.toFixed(2) ?? \"--\"}\n </span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">High:</span>\n <span className=\"oui-font-semibold\">\n {data.high?.toFixed(2) ?? \"--\"}\n </span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Low:</span>\n <span className=\"oui-font-semibold\">\n {data.low?.toFixed(2) ?? \"--\"}\n </span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Close:</span>\n <span className=\"oui-font-semibold\">{data.close.toFixed(2)}</span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2 oui-mt-1 oui-pt-2 oui-border-t oui-border-base-contrast-16\">\n <span className=\"oui-text-base-contrast-54\">Time:</span>\n <span className=\"oui-font-semibold\">{label}</span>\n </div>\n </Box>\n );\n }\n\n return null;\n};\n\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n if (dataLength <= 12 && !isMobile) return 0;\n\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56;\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16;\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12;\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\nfunction tickFormatter(value: number): string {\n return value.toFixed(2);\n}\n\nexport const CombinedPriceChart: React.FC<CombinedPriceChartProps> = (\n props,\n) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n } = props;\n\n const colors = useColors();\n\n const xAxisInterval = useMemo(\n () => calculateOptimalInterval(data.length, aggregationWindow, isMobile),\n [data.length, aggregationWindow, isMobile],\n );\n\n // Calculate Y-axis domain with intelligent scaling and nice numbers\n // Only use close prices since we're only displaying close price line\n const yAxisDomainAndTicks = useMemo(() => {\n if (data.length === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n // Filter out null prices before calculating domain\n const closePrices = data\n .map((item) => item.close)\n .filter((price) => price !== null && price !== undefined) as number[];\n\n if (closePrices.length === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n const minPrice = Math.min(...closePrices);\n const maxPrice = Math.max(...closePrices);\n\n const range = maxPrice - minPrice;\n if (range === 0)\n return {\n domain: [minPrice - 1, maxPrice + 1],\n ticks: [minPrice - 1, maxPrice + 1],\n };\n\n // Add 10% padding on each side\n const padding = range * 0.1;\n const lower = minPrice - padding;\n const upper = maxPrice + padding;\n\n // Calculate step size for nice, even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n // Try different interval counts to find the best even spacing\n let step = magnitude;\n const rangeWidth = upper - lower;\n\n // Find a nice step that gives us 4-6 tick marks with even spacing\n for (const divisor of [1, 2, 2.5, 5]) {\n const candidate = magnitude * divisor;\n const tickCount = Math.ceil(rangeWidth / candidate);\n if (tickCount >= 4 && tickCount <= 6) {\n step = candidate;\n break;\n }\n }\n\n // Generate evenly spaced ticks\n const roundedLower = Math.floor(lower / step) * step;\n const roundedUpper = Math.ceil(upper / step) * step;\n const ticks: number[] = [];\n for (let tick = roundedLower; tick <= roundedUpper; tick += step) {\n ticks.push(Number(tick.toFixed(10))); // Remove floating point errors\n }\n\n return { domain: [roundedLower, roundedUpper], ticks };\n }, [data]);\n\n if (invisible || data.length === 0) {\n return (\n <ChartEmptyState\n title=\"No Price Data\"\n description=\"No price data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={data as any}\n margin={{ left: 45, top: 10, right: 50, bottom: 20 }}\n syncId=\"symbol-performance\"\n >\n <Tooltip cursor={<CustomizedCross />} content={<CustomTooltip />} />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n <YAxis\n domain={yAxisDomainAndTicks.domain}\n ticks={yAxisDomainAndTicks.ticks}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n width={50}\n />\n\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={50}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n {/* Close Price Line */}\n <Line\n type=\"natural\"\n dataKey=\"close\"\n stroke=\"#00B49E\"\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId, useRef } from \"react\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n AreaChart,\n Area,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type AssetChartDataItem = {\n date: string;\n account_value: number;\n};\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: AssetChartDataItem[];\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n />\n );\n }\n\n return null;\n};\n\nexport const AssetLineChart: React.FC<PnlLineChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n const colorId = useId();\n const { isMobile } = useScreen();\n const chartComponent = isMobile ? (\n <AreaChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n />\n {!props.invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor=\"#00B49E\" offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor=\"#00B49E\" offset=\"100%\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n />\n </>\n )}\n </AreaChart>\n ) : (\n <LineChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {/* <Legend /> */}\n {!props.invisible && (\n <Line\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId, useRef } from \"react\";\nimport {\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n AreaChart,\n Area,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type AssetChartDataItem = {\n date: string;\n account_value: number;\n};\n\nexport type PnlAreaChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: AssetChartDataItem[];\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n />\n );\n }\n\n return null;\n};\n\nexport const AssetAreaChart: React.FC<PnlAreaChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n const colorId = useId();\n const { isMobile } = useScreen();\n const chartComponent = (\n <AreaChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {!props.invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor=\"#00B49E\" offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor=\"#00B49E\" offset=\"100%\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n />\n </>\n )}\n </AreaChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","import React from \"react\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { Box, cn } from \"@kodiak-finance/orderly-ui\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type VolChartDataItem = {\n date: string;\n volume: number;\n opacity?: string | number;\n};\n\nexport type VolChartTooltip = {\n rm?: number;\n dp?: number;\n};\n\nexport type VolChartProps = {\n colors?: { fill: string };\n data: ReadonlyArray<VolChartDataItem> | VolChartDataItem[];\n tooltip?: VolChartTooltip;\n className?: string;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height, opacity } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n opacity={opacity}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height, payload, stroke, fill } = props;\n\n if (payload?.[0]?.value === 0) {\n return null;\n }\n\n return (\n // @ts-ignore\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (\n props: TooltipProps<any, any> & { tooltip?: VolChartTooltip },\n) => {\n const { active, payload, label, tooltip } = props;\n\n if (payload?.[0]?.value === 0) {\n return null;\n }\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label}\n value={payload[0].value}\n // prefix=\"Commission\"\n titleClassName=\"oui-gap-4\"\n rm={tooltip?.rm}\n dp={tooltip?.dp}\n />\n );\n }\n\n return null;\n};\n\nexport const VolBarChart: React.FC<VolChartProps> = (props) => {\n const colors = useColors(\n props.colors?.fill\n ? { profit: props.colors?.fill, loss: props.colors?.fill }\n : undefined,\n );\n\n const isEmpty =\n (props.data as any)?.reduce((pre: any, cur: any) => pre + cur.volume, 0) ===\n 0;\n\n const maxVolume = (props.data as any)?.reduce(\n (pre: any, cur: any) => (pre > cur.volume ? pre : cur.volume),\n 0,\n );\n\n const decimal = maxVolume <= 10 ? 2 : maxVolume <= 100 ? 1 : 0;\n\n return (\n // @ts-ignore\n <Box className={cn(props.className)}>\n {/* @ts-ignore */}\n <ResponsiveContainer>\n {/* @ts-ignore */}\n <BarChart\n data={props.data as any[]}\n margin={{ left: -0, top: 6, right: 0, bottom: 20 }}\n >\n {/* @ts-ignore */}\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip tooltip={props.tooltip} />}\n />\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.08}\n repeatCount={6}\n />\n {/* @ts-ignore */}\n <ReferenceLine y={0} stroke=\"#000\" />\n {/* @ts-ignore */}\n <Bar dataKey=\"volume\" shape={<RoundedRectangle />} minPointSize={1}>\n {props.data.map((entry, index) => {\n return (\n // @ts-ignore\n <Cell\n key={`cell-${index}`}\n fill={entry.volume > 0 ? colors.profit : colors.loss}\n opacity={entry.opacity}\n />\n );\n })}\n </Bar>\n {/* @ts-ignore */}\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n dataKey={\"volume\"}\n tickFormatter={(value, index) => {\n if (isEmpty) return `${index * 100}`;\n return numberToHumanStyle(value, decimal);\n }}\n width={45}\n />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={props.data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"rgb(229, 231, 235)\"\n strokeOpacity={0.2}\n />\n </BarChart>\n </ResponsiveContainer>\n </Box>\n );\n};\nfunction numberToHumanStyle(number: number, decimalPlaces: number = 0): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n\n let index = 0;\n while (number >= 1000 && index < abbreviations.length - 1) {\n number /= 1000;\n index++;\n }\n\n const roundedNumber = toFixedWithoutRounding(number, decimalPlaces);\n\n return `${roundedNumber}${abbreviations[index]}`;\n}\n\nfunction toFixedWithoutRounding(num: number, fix: number): string {\n const numStr = num.toString();\n const decimalIndex = numStr.indexOf(\".\");\n\n if (decimalIndex === -1 || fix === 0) {\n return numStr.split(\".\")[0];\n }\n\n const cutoffIndex = decimalIndex + fix + 1;\n\n return numStr.slice(0, cutoffIndex);\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { Box, cn, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport interface UnifiedChartProps {\n volumeData: any[];\n feesData: any[];\n priceData: any[];\n aggregationWindow: string;\n includeFees: boolean;\n className?: string;\n}\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst UnifiedChartTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length > 0) {\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-font-semibold\">{label}</div>\n {payload.map((entry, index) => (\n <div key={index} className=\"oui-text-xs oui-flex oui-gap-2\">\n <span style={{ color: entry.color }} className=\"oui-font-semibold\">\n {entry.name}:\n </span>\n <span>{entry.value?.toFixed(2) || 0}</span>\n </div>\n ))}\n </Box>\n );\n }\n\n return null;\n};\n\nexport const UnifiedSymbolPerformanceChart: React.FC<UnifiedChartProps> = ({\n volumeData,\n feesData,\n priceData,\n aggregationWindow,\n includeFees,\n className,\n}) => {\n // Merge all data sources by date\n const mergedData = useMemo(() => {\n const dataMap = new Map<string, any>();\n\n // Add volume data\n volumeData.forEach((item) => {\n dataMap.set(item.date, {\n ...dataMap.get(item.date),\n date: item.date,\n volume: item.volume,\n });\n });\n\n // Add fees data\n feesData.forEach((item) => {\n dataMap.set(item.date, {\n ...dataMap.get(item.date),\n date: item.date,\n fees: item.fees,\n });\n });\n\n // Add price data\n priceData.forEach((item) => {\n dataMap.set(item.date, {\n ...dataMap.get(item.date),\n date: item.date,\n open: item.open,\n high: item.high,\n low: item.low,\n close: item.close,\n });\n });\n\n return Array.from(dataMap.values());\n }, [volumeData, feesData, priceData]);\n\n if (mergedData.length === 0) {\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <div className=\"oui-text-center oui-text-base-contrast-54 oui-py-10\">\n No data available\n </div>\n </Box>\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ComposedChart\n data={mergedData}\n margin={{ left: 0, top: 10, right: 10, bottom: 20 }}\n >\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n {/* Left Y-axis for bars (Volume, Fees) */}\n <YAxis\n yAxisId=\"left\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n width={45}\n label={{\n value: \"Volume / Fees\",\n angle: -90,\n position: \"insideLeft\",\n }}\n />\n\n {/* Right Y-axis for price line */}\n <YAxis\n yAxisId=\"right\"\n orientation=\"right\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n width={50}\n label={{ value: \"Price\", angle: 90, position: \"insideRight\" }}\n />\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={<UnifiedChartTooltip />}\n />\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {/* Volume bars */}\n <Bar\n yAxisId=\"left\"\n dataKey=\"volume\"\n fill=\"rgba(0, 180, 158, 0.6)\"\n name=\"Volume\"\n />\n\n {/* Fees bars */}\n <Bar\n yAxisId=\"left\"\n dataKey=\"fees\"\n fill=\"rgba(255, 107, 107, 0.6)\"\n name=\"Fees\"\n />\n\n {/* Price line */}\n <Line\n yAxisId=\"right\"\n type=\"natural\"\n dataKey=\"close\"\n stroke=\"#00B49E\"\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n name=\"Price\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n","import plugin from \"tailwindcss/plugin\";\nimport type { PluginCreator } from \"tailwindcss/types/config\";\n\nexport const chartPlugin: PluginCreator = () =>\n plugin(function ({ addComponents, addBase }) {\n addComponents(\n {\n \".xAxis\": {\n \".recharts-cartesian-axis-tick:first-child text\": {\n \"text-anchor\": \"start\",\n },\n \".recharts-cartesian-axis-tick:last-child text\": {\n \"text-anchor\": \"end\",\n },\n },\n },\n {\n respectPrefix: false,\n },\n );\n });\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tailwindcss@3.4.17_ts-node@10.9.2_@swc+core@1.13.2_@swc+helpers@0.5.17__@types+node@24.3.1_typescript@5.8.3_/node_modules/tailwindcss/lib/util/createPlugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.17_ts-node@10.9.2_@swc+core@1.13.2_@swc+helpers@0.5.17__@types+node@24.3.1_typescript@5.8.3_/node_modules/tailwindcss/lib/public/create-plugin.js","../../../node_modules/.pnpm/tailwindcss@3.4.17_ts-node@10.9.2_@swc+core@1.13.2_@swc+helpers@0.5.17__@types+node@24.3.1_typescript@5.8.3_/node_modules/tailwindcss/plugin.js","../src/utils/yTickFormatter.ts","../src/orderly/customTooltip.tsx","../src/utils/theme.ts","../src/orderly/useColors.ts","../src/orderly/pnlBar.tsx","../src/orderly/xAxisLabel.tsx","../src/orderly/pnlLine.tsx","../src/orderly/pnlArea.tsx","../src/orderly/chartEmptyState.tsx","../src/orderly/combinedPnlChart.tsx","../src/orderly/combinedVolumeChart.tsx","../src/orderly/combinedFeesChart.tsx","../src/orderly/combinedPriceChart.tsx","../src/orderly/assetLine.tsx","../src/orderly/assetArea.tsx","../src/orderly/volBar.tsx","../src/orderly/unifiedSymbolChart.tsx","../src/tailwindcss/theme.ts"],"names":["plugin","numberToHumanStyle","Box","jsxs","Flex","jsx","Text","useMemo","useTranslation","Cross","useRef","ResponsiveContainer","cn","BarChart","Tooltip","CartesianGrid","ReferenceLine","Bar","Cell","YAxis","XAxis","XAxisLabel","CustomTooltip","useScreen","LineChart","Line","dataTransfer","useId","AreaChart","Fragment","Area","BarChartIcon","RoundedRectangle","CustomizedCross","ComposedChart","tickFormatter","formatValueWithSign","createCustomTooltip","calculateOptimalInterval","transformToCumulative"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import { numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\n\nexport const tickFormatter = (value: number) => {\n const absValue = Math.abs(value);\n const dp = absValue === 0 ? 0 : absValue <= 10 ? 2 : absValue <= 100 ? 1 : 0;\n const formatted = numberToHumanStyle(absValue, dp);\n return value < 0 ? `-${formatted}` : formatted;\n};\n","import { Box, Flex, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderlyChartTooltip = (props: {\n label: string;\n value: string | number;\n unit?: string;\n prefix?: React.ReactNode;\n titleClassName?: string;\n coloring?: boolean;\n dp?: number;\n rm?: number;\n}) => {\n const {\n label,\n value,\n prefix,\n unit = \"USDC\",\n coloring = false,\n dp,\n rm,\n } = props;\n return (\n <Box intensity={600} p={3} r=\"md\">\n <Flex direction={\"row\"} className={props.titleClassName}>\n {prefix}\n <Text.numeral\n unit={unit}\n as=\"div\"\n size=\"sm\"\n coloring={coloring}\n showIdentifier={coloring}\n unitClassName=\"oui-text-base-contrast-54 oui-ml-1\"\n weight=\"semibold\"\n rm={rm}\n dp={dp}\n >\n {value}\n </Text.numeral>\n </Flex>\n <Text size=\"2xs\" intensity={54} weight=\"semibold\">\n {label}\n </Text>\n </Box>\n );\n};\n","export const getThemeColors = () => {\n const root = document.documentElement;\n const computedStyle = getComputedStyle(root);\n\n const colors = {\n primary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary\")\n ),\n primaryLight: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-primary-light\")\n ),\n secondary: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-secondary\")\n ),\n success: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-success\")\n ),\n warning: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-warning\")\n ),\n danger: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-danger\")),\n info: convertToRGB(computedStyle.getPropertyValue(\"--oui-color-info\")),\n loss: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-loss\")\n ),\n profit: convertToRGB(\n computedStyle.getPropertyValue(\"--oui-color-trading-profit\")\n ),\n };\n\n return colors;\n};\n\nconst convertToRGB = (color: string) => {\n return `rgb(${color.split(\" \").join(\",\")})`;\n};\n","import { useMemo } from \"react\";\nimport { getThemeColors } from \"../utils/theme\";\n\nexport const useColors = (colors?: { profit: string; loss: string }) => {\n const _colors = useMemo(() => {\n const themeColors = getThemeColors();\n return {\n profit: colors?.profit || themeColors.profit,\n loss: colors?.loss || themeColors.loss,\n primary: themeColors.primary,\n primaryLight: themeColors.primaryLight,\n };\n }, [colors]);\n\n return _colors;\n};\n","import React, { useRef } from \"react\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type PnLChartDataItem = {\n date: string;\n pnl: number;\n};\n\nexport type PnLChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: ReadonlyArray<PnLChartDataItem> | PnLChartDataItem[];\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst RoundedRectangle: React.FC<any> = (props) => {\n const { fill, x, y, width, height } = props;\n\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nexport const XAxisLabel: React.FC<any> = (props) => {\n const { x, y, stroke, payload, index, width, containerWidth } = props;\n const { t } = useTranslation();\n const _x =\n index === 0\n ? 48\n : containerWidth > 0\n ? containerWidth - 10\n : width + payload.offset;\n\n return (\n <g transform={`translate(${_x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor={index === 0 ? \"start\" : \"end\"}\n // textAnchor={\"start\"}\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : t(\"chart.now\")}\n </text>\n </g>\n );\n};\n\nconst CustomizedCross: React.FC<any> = (props) => {\n const { width, height, stroke, fill } = props;\n return (\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nexport const PnLBarChart: React.FC<PnLChartProps> = (props) => {\n const { invisible, data, responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n const widthRef = useRef<number>(0);\n return (\n <ResponsiveContainer\n className={cn(invisible && \"chart-invisible\")}\n onResize={(width) => {\n widthRef.current = width;\n }}\n {...responsiveContainerProps}\n >\n <BarChart\n data={data as any[]}\n margin={{ left: -10, top: 10, right: 10, bottom: 30 }}\n >\n {!invisible && (\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip />}\n />\n )}\n\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {!invisible && (\n <Bar dataKey=\"pnl\" shape={<RoundedRectangle />}>\n {data.map((entry, index) => {\n return (\n <Cell\n key={`cell-${index}`}\n fill={entry.pnl > 0 ? colors.profit : colors.loss}\n />\n );\n })}\n </Bar>\n )}\n\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickFormatter={(value) => tickFormatter(value)}\n tickLine={false}\n axisLine={false}\n dataKey={\"pnl\"}\n />\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel containerWidth={widthRef.current} />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const XAxisLabel = (props: any) => {\n const { x, y, stroke, payload, index } = props;\n const { t } = useTranslation();\n return (\n <g transform={`translate(${x},${y - 6})`}>\n <text\n x={0}\n y={0}\n dy={16}\n textAnchor=\"end\"\n fontSize={10}\n fill={\"rgba(255,255,255,0.54)\"}\n >\n {index === 0 ? payload.value : t(\"chart.now\")}\n </text>\n </g>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo, useRef } from \"react\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: any;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nconst dataTransfer = (data: any[]) => {\n const series: any[] = [];\n data?.reduce<any>((acc, item) => {\n acc += item.pnl;\n series.push({ ...item, pnl: acc, _pnl: item.pnl });\n return acc;\n }, 0);\n return series;\n};\n\nexport const PnlLineChart: React.FC<PnlLineChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n\n const { isMobile } = useScreen();\n\n const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n const chartComponent = (\n <LineChart\n data={data}\n margin={{ top: 20, right: 10, left: -10, bottom: 0 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"pnl\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {!props.invisible && (\n <Line\n type=\"natural\"\n dataKey=\"pnl\"\n stroke={colors.primary}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId, useMemo, useRef } from \"react\";\nimport {\n XAxis,\n YAxis,\n CartesianGrid,\n AreaChart,\n Area,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type PnlAreaChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: any;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n coloring\n />\n );\n }\n\n return null;\n};\n\nconst dataTransfer = (data: any[]) => {\n const series: any[] = [];\n data?.reduce<any>((acc, item) => {\n acc += item.pnl;\n series.push({ ...item, pnl: acc, _pnl: item.pnl });\n return acc;\n }, 0);\n return series;\n};\n\nexport const PnlAreaChart: React.FC<PnlAreaChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n\n const { isMobile } = useScreen();\n\n const colorId = useId();\n\n const data = useMemo(() => dataTransfer(props.data), [props.data]);\n\n const baseValue = useMemo(\n () => data.map((item) => item.pnl).sort((a, b) => a - b)[0] || 0,\n [data],\n );\n\n const chartComponent = (\n <AreaChart\n data={data}\n margin={{ top: 20, right: 10, left: -10, bottom: 0 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"pnl\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {!props.invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor={colors.primary} offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor={colors.primary} offset=\"100%\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"pnl\"\n stroke={colors.primary}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n baseValue={baseValue || 0}\n />\n </>\n )}\n </AreaChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","import React from \"react\";\nimport { Box, Flex, Text, cn } from \"@kodiak-finance/orderly-ui\";\nimport { BarChartIcon } from \"@kodiak-finance/orderly-ui\";\n\nexport type ChartEmptyStateProps = {\n title?: string;\n description?: string;\n height?: string;\n className?: string;\n};\n\n/**\n * Reusable empty state component for charts when no data is available.\n * Displays an icon, title, and optional description in a centered layout.\n *\n * @example\n * <ChartEmptyState\n * title=\"No Trading Activity\"\n * description=\"No trades were recorded for the selected period\"\n * height=\"300px\"\n * />\n */\nexport const ChartEmptyState: React.FC<ChartEmptyStateProps> = ({\n title = \"No Data Available\",\n description = \"No data to display for the selected period\",\n height = \"300px\",\n className,\n}) => {\n return (\n <Box\n className={cn(\n \"oui-w-full oui-flex oui-items-center oui-justify-center oui-bg-base-8\",\n className,\n )}\n style={{ height }}\n >\n <Flex\n direction=\"column\"\n itemAlign=\"center\"\n gap={3}\n className=\"oui-text-center\"\n >\n <BarChartIcon />\n <Text\n as=\"div\"\n size=\"sm\"\n weight=\"semibold\"\n className=\"oui-text-base-contrast-100\"\n >\n {title}\n </Text>\n <Text as=\"div\" size=\"xs\" className=\"oui-text-base-contrast-54\">\n {description}\n </Text>\n </Flex>\n </Box>\n );\n};\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedPnLChartDataItem = {\n date: string;\n pnl: number;\n};\n\nexport type CombinedPnLChartProps = {\n data: ReadonlyArray<CombinedPnLChartDataItem> | CombinedPnLChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n colors?: {\n profit: string;\n loss: string;\n };\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n showCumulative?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value.toFixed(2)}`;\n};\n\nconst getValueColor = (value: number, colors: any): string => {\n if (value === 0) return \"inherit\"; // Neutral color for zero\n return value > 0 ? colors.profit : colors.loss;\n};\n\nconst createCustomTooltip = (showCumulative: boolean) => {\n return (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n const colors = useColors();\n\n if (active && payload && payload.length >= 1) {\n // Get bar (period PnL) value\n const barData = payload.find((p) => p.dataKey === \"pnl\");\n const barValue = barData?.value ?? 0;\n\n const formattedDate = label;\n const barColor = getValueColor(barValue, colors);\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">{formattedDate}:</span>\n <span className=\"oui-font-semibold\" style={{ color: barColor }}>\n {formatValueWithSign(barValue)} USDC\n </span>\n </div>\n {showCumulative && (\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Cumulative:</span>\n <span className=\"oui-font-semibold\">\n {(() => {\n const lineData = payload.find(\n (p) => p.dataKey === \"cumulativePnL\",\n );\n const cumulativeValue = lineData?.value ?? 0;\n return formatValueWithSign(cumulativeValue);\n })()}{\" \"}\n USDC\n </span>\n </div>\n )}\n </Box>\n );\n }\n\n return null;\n };\n};\n\n/**\n * Calculates optimal x-axis interval based on data length and aggregation window.\n * Uses responsive spacing based on actual data size and screen size.\n */\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n // For desktop with small datasets, show all labels\n if (dataLength <= 12 && !isMobile) return 0;\n\n // Smart calculation based on actual data length\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n // Reduce target labels on mobile for more aggressive spacing\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n // For 15-min: aim for 6+ labels\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56; // ~12-hour spacing\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28; // ~7-hour spacing\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16; // ~4-hour spacing\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n // For hourly: aim for 6+ labels\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28; // ~daily spacing\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12; // ~12-hour spacing\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\n/**\n * Transform data to include cumulative PnL values\n */\nconst transformToCumulative = (\n data: ReadonlyArray<CombinedPnLChartDataItem> | CombinedPnLChartDataItem[],\n) => {\n let cumulative = 0;\n return (data as CombinedPnLChartDataItem[]).map((item) => {\n cumulative += item.pnl;\n return {\n ...item,\n cumulativePnL: cumulative,\n };\n });\n};\n\nexport const CombinedPnLChart: React.FC<CombinedPnLChartProps> = (props) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n showCumulative = true,\n } = props;\n\n const colors = useColors(props.colors);\n\n // Transform data to include cumulative values\n const transformedData = useMemo(() => transformToCumulative(data), [data]);\n\n // Calculate optimal x-axis interval\n const xAxisInterval = useMemo(() => {\n return calculateOptimalInterval(\n transformedData.length,\n aggregationWindow,\n isMobile,\n );\n }, [transformedData.length, aggregationWindow, isMobile]);\n\n // Calculate Y-axis domain with even spacing and proportional padding\n const yAxisDomain = useMemo(() => {\n if (transformedData.length === 0) return [0, 1];\n\n const pnlValues = transformedData.map((item) => item.pnl);\n const cumulativeValues = showCumulative\n ? transformedData.map((item) => item.cumulativePnL)\n : [];\n\n const valuesToConsider = showCumulative\n ? [...pnlValues, ...cumulativeValues, 0]\n : [...pnlValues, 0];\n\n const minValue = Math.min(...valuesToConsider);\n const maxValue = Math.max(...valuesToConsider);\n\n const range = maxValue - minValue;\n if (range === 0) return [0, 1];\n\n // Add 10% padding on each side\n const padding = range * 0.1;\n const lower = minValue - padding;\n const upper = maxValue + padding;\n\n // Round to nice numbers for even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n const step = Math.ceil((upper - lower) / 5 / magnitude) * magnitude;\n\n const roundedLower = Math.floor(lower / step) * step;\n const roundedUpper = Math.ceil(upper / step) * step;\n\n return [roundedLower, roundedUpper];\n }, [transformedData, showCumulative]);\n\n if (invisible || transformedData.length === 0) {\n return (\n <ChartEmptyState\n title=\"No P&L Data\"\n description=\"No profit and loss data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={transformedData}\n margin={{\n left: props.isMobile ? 18 : 45,\n top: 8,\n right: props.isMobile ? 18 : 24,\n bottom: props.isMobile ? 12 : 20,\n }}\n syncId=\"symbol-performance\"\n >\n <defs>\n <linearGradient id=\"cumulativeGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor=\"#608CFF\" stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor=\"#608CFF\" stopOpacity={0} />\n </linearGradient>\n </defs>\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={createCustomTooltip(showCumulative)}\n />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine\n y={0}\n stroke=\"rgba(255,255,255,0.3)\"\n strokeWidth={2}\n strokeDasharray=\"4 4\"\n />\n\n {/* Unified Y-Axis for both bars and line */}\n <YAxis\n domain={yAxisDomain}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n width={45}\n />\n\n {/* X-Axis with smart interval spacing - professional approach */}\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={30}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n {/* Period PnL Bars */}\n <Bar\n dataKey=\"pnl\"\n shape={<RoundedRectangle />}\n minPointSize={1}\n isAnimationActive={false}\n >\n {transformedData.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={\n entry.pnl === 0\n ? \"rgba(255,255,255,0.2)\"\n : entry.pnl > 0\n ? colors.profit\n : colors.loss\n }\n />\n ))}\n </Bar>\n\n {/* Cumulative PnL Area with gradient fill */}\n {showCumulative && (\n <Area\n type=\"natural\"\n dataKey=\"cumulativePnL\"\n fill=\"url(#cumulativeGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n )}\n\n {/* Cumulative PnL Line */}\n {showCumulative && (\n <Line\n type=\"natural\"\n dataKey=\"cumulativePnL\"\n stroke={colors.primary}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n\n/**\n * Format Y-axis tick values with human-readable abbreviations (K, M, B, T)\n */\nfunction tickFormatter(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = Math.abs(value);\n\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n\n const sign = value < 0 ? \"-\" : \"\";\n const decimalPlaces = num <= 10 ? 1 : 0;\n const rounded = num.toFixed(decimalPlaces);\n\n return `${sign}${rounded}${abbreviations[index]}`;\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedVolumeChartDataItem = {\n date: string;\n volume: number;\n};\n\nexport type CombinedVolumeChartProps = {\n data:\n | ReadonlyArray<CombinedVolumeChartDataItem>\n | CombinedVolumeChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n colors?: {\n fill: string;\n };\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n showCumulative?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value}`;\n};\n\nconst createCustomTooltip = (showCumulative: boolean) => {\n return (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length >= 1) {\n const volumeData = payload.find((p) => p.dataKey === \"volume\");\n const volumeValue = volumeData?.value ?? 0;\n\n const formattedDate = label;\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">{formattedDate}:</span>\n <span className=\"oui-font-semibold\">\n {formatValueWithSign(volumeValue)} USDC\n </span>\n </div>\n {showCumulative && (\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Cumulative:</span>\n <span className=\"oui-font-semibold\">\n {(() => {\n const cumulativeData = payload.find(\n (p) => p.dataKey === \"cumulativeVolume\",\n );\n const cumulativeValue = cumulativeData?.value ?? 0;\n return formatValueWithSign(cumulativeValue);\n })()}{\" \"}\n USDC\n </span>\n </div>\n )}\n </Box>\n );\n }\n\n return null;\n };\n};\n\n/**\n * Calculates optimal x-axis interval based on data length and aggregation window.\n * Uses responsive spacing based on actual data size and screen size.\n */\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n // For desktop with small datasets, show all labels\n if (dataLength <= 12 && !isMobile) return 0;\n\n // Smart calculation based on actual data length\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n // Reduce target labels on mobile for more aggressive spacing\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56;\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16;\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12;\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\nconst transformToCumulative = (\n data:\n | ReadonlyArray<CombinedVolumeChartDataItem>\n | CombinedVolumeChartDataItem[],\n) => {\n let cumulative = 0;\n return (data as CombinedVolumeChartDataItem[]).map((item) => {\n cumulative += item.volume;\n return {\n ...item,\n cumulativeVolume: cumulative,\n };\n });\n};\n\nexport const CombinedVolumeChart: React.FC<CombinedVolumeChartProps> = (\n props,\n) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n showCumulative = false,\n } = props;\n\n const colors = useColors(\n props.colors\n ? { profit: props.colors.fill, loss: props.colors.fill }\n : undefined,\n );\n\n const transformedData = useMemo(() => transformToCumulative(data), [data]);\n\n const xAxisInterval = useMemo(\n () =>\n calculateOptimalInterval(\n transformedData.length,\n aggregationWindow,\n isMobile,\n ),\n [transformedData.length, aggregationWindow, isMobile],\n );\n\n const yAxisDomain = useMemo(() => {\n if (transformedData.length === 0) return [0, 1];\n\n const volumeValues = transformedData.map((item) => item.volume);\n const cumulativeValues = showCumulative\n ? transformedData.map((item) => item.cumulativeVolume)\n : [];\n\n const maxValue = Math.max(\n ...(showCumulative\n ? [...volumeValues, ...cumulativeValues]\n : volumeValues),\n 0,\n );\n\n // Volumes are always non-negative, so domain starts at 0\n const range = maxValue;\n if (range === 0) return [0, 1];\n\n // Add 10% padding\n const padding = range * 0.1;\n const upper = maxValue + padding;\n\n // Round to nice numbers for even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n const step = Math.ceil(upper / 5 / magnitude) * magnitude;\n const roundedUpper = Math.ceil(upper / step) * step;\n\n return [0, roundedUpper];\n }, [transformedData, showCumulative]);\n\n if (invisible || transformedData.length === 0) {\n return (\n <ChartEmptyState\n title=\"No Volume Data\"\n description=\"No trading volume data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={transformedData}\n margin={{\n left: props.isMobile ? 18 : 45,\n top: 8,\n right: props.isMobile ? 18 : 24,\n bottom: props.isMobile ? 12 : 20,\n }}\n syncId=\"symbol-performance\"\n >\n <defs>\n <linearGradient id=\"volumeGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor=\"#00B49E\" stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor=\"#00B49E\" stopOpacity={0} />\n </linearGradient>\n </defs>\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={createCustomTooltip(showCumulative)}\n />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n <YAxis\n domain={yAxisDomain}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n width={45}\n />\n\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={30}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <Bar\n dataKey=\"volume\"\n shape={<RoundedRectangle />}\n minPointSize={1}\n isAnimationActive={false}\n >\n {transformedData.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={\n entry.volume === 0 ? \"rgba(255,255,255,0.2)\" : colors.profit\n }\n opacity={0.8}\n />\n ))}\n </Bar>\n\n {/* Cumulative Volume Area with gradient fill */}\n {showCumulative && (\n <Area\n type=\"natural\"\n dataKey=\"cumulativeVolume\"\n fill=\"url(#volumeGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n )}\n\n {/* Cumulative Volume Line */}\n {showCumulative && (\n <Line\n type=\"natural\"\n dataKey=\"cumulativeVolume\"\n stroke={colors.profit}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n\nfunction tickFormatter(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = Math.abs(value);\n\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n\n const sign = value < 0 ? \"-\" : \"\";\n const decimalPlaces = num <= 10 ? 1 : 0;\n const rounded = num.toFixed(decimalPlaces);\n\n return `${sign}${rounded}${abbreviations[index]}`;\n}\n\nfunction formatVolumeValue(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = value;\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n const decimalPlaces = num <= 10 ? 2 : num <= 100 ? 1 : 0;\n const rounded = parseFloat(num.toFixed(decimalPlaces));\n return `${rounded}${abbreviations[index]}`;\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedFeesChartDataItem = {\n date: string;\n fees: number;\n};\n\nexport type CombinedFeesChartProps = {\n data: ReadonlyArray<CombinedFeesChartDataItem> | CombinedFeesChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n colors?: {\n fill: string;\n };\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n showCumulative?: boolean;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value.toFixed(2)}`;\n};\n\nconst createCustomTooltip = (showCumulative: boolean) => {\n return (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length >= 1) {\n const feesData = payload.find((p) => p.dataKey === \"fees\");\n const feesValue = feesData?.value ?? 0;\n\n const formattedDate = label;\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">{formattedDate}:</span>\n <span className=\"oui-font-semibold\">\n {formatValueWithSign(feesValue)} USDC\n </span>\n </div>\n {showCumulative && (\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Cumulative:</span>\n <span className=\"oui-font-semibold\">\n {(() => {\n const cumulativeData = payload.find(\n (p) => p.dataKey === \"cumulativeFees\",\n );\n const cumulativeValue = cumulativeData?.value ?? 0;\n return formatValueWithSign(cumulativeValue);\n })()}{\" \"}\n USDC\n </span>\n </div>\n )}\n </Box>\n );\n }\n\n return null;\n };\n};\n\n/**\n * Calculates optimal x-axis interval based on data length and aggregation window.\n * Uses responsive spacing based on actual data size and screen size.\n */\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n // For desktop with small datasets, show all labels\n if (dataLength <= 12 && !isMobile) return 0;\n\n // Smart calculation based on actual data length\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n // Reduce target labels on mobile for more aggressive spacing\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56;\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16;\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12;\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\nconst transformToCumulative = (\n data: ReadonlyArray<CombinedFeesChartDataItem> | CombinedFeesChartDataItem[],\n) => {\n let cumulative = 0;\n return (data as CombinedFeesChartDataItem[]).map((item) => {\n cumulative += item.fees;\n return {\n ...item,\n cumulativeFees: cumulative,\n };\n });\n};\n\nexport const CombinedFeesChart: React.FC<CombinedFeesChartProps> = (props) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n showCumulative = false,\n } = props;\n\n const colors = useColors(\n props.colors\n ? { profit: props.colors.fill, loss: props.colors.fill }\n : undefined,\n );\n\n const transformedData = useMemo(() => transformToCumulative(data), [data]);\n\n const xAxisInterval = useMemo(\n () =>\n calculateOptimalInterval(\n transformedData.length,\n aggregationWindow,\n isMobile,\n ),\n [transformedData.length, aggregationWindow, isMobile],\n );\n\n const yAxisDomainAndTicks = useMemo(() => {\n if (transformedData.length === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n const feesValues = transformedData.map((item) => item.fees);\n const cumulativeValues = showCumulative\n ? transformedData.map((item) => item.cumulativeFees)\n : [];\n\n const valuesToConsider = showCumulative\n ? [...feesValues, ...cumulativeValues, 0]\n : [...feesValues, 0];\n\n const minValue = Math.min(...valuesToConsider);\n const maxValue = Math.max(...valuesToConsider);\n\n const range = maxValue - minValue;\n if (range === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n // For fees (typically negative), add padding only on the lower side\n // Keep upper bound at 0 to minimize whitespace above the axis\n const padding = range * 0.1;\n const lower = minValue - padding;\n const upper = 0; // Fees bars go downward from 0\n\n // Calculate step size for nice, even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n let step = magnitude;\n const rangeWidth = Math.abs(upper - lower);\n\n // Find a nice step that gives us 4-6 tick marks with even spacing\n for (const divisor of [1, 2, 2.5, 5]) {\n const candidate = magnitude * divisor;\n const tickCount = Math.ceil(rangeWidth / candidate);\n if (tickCount >= 4 && tickCount <= 6) {\n step = candidate;\n break;\n }\n }\n\n // Generate evenly spaced ticks starting from lower, going up to 0\n const roundedLower = Math.floor(lower / step) * step;\n const ticks: number[] = [];\n for (let tick = roundedLower; tick < upper; tick += step) {\n ticks.push(Number(tick.toFixed(10))); // Remove floating point errors\n }\n // Always ensure 0 is included as the final tick\n ticks.push(0);\n\n return { domain: [roundedLower, 0], ticks };\n }, [transformedData, showCumulative]);\n\n if (invisible || transformedData.length === 0) {\n return (\n <ChartEmptyState\n title=\"No Fees Data\"\n description=\"No fees data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={transformedData}\n margin={{\n left: props.isMobile ? 18 : 45,\n top: 8,\n right: props.isMobile ? 18 : 24,\n bottom: props.isMobile ? 12 : 20,\n }}\n syncId=\"symbol-performance\"\n >\n <defs>\n <linearGradient id=\"feesGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor=\"#FF6B6B\" stopOpacity={0.4} />\n <stop offset=\"95%\" stopColor=\"#FF6B6B\" stopOpacity={0} />\n </linearGradient>\n </defs>\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={createCustomTooltip(showCumulative)}\n />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n <YAxis\n domain={yAxisDomainAndTicks.domain}\n ticks={yAxisDomainAndTicks.ticks}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n width={45}\n />\n\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={30}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <Bar\n dataKey=\"fees\"\n shape={<RoundedRectangle />}\n minPointSize={1}\n isAnimationActive={false}\n >\n {transformedData.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={entry.fees === 0 ? \"rgba(255,255,255,0.2)\" : colors.loss}\n opacity={0.8}\n />\n ))}\n </Bar>\n\n {/* Cumulative Fees Area with gradient fill */}\n {showCumulative && (\n <Area\n type=\"natural\"\n dataKey=\"cumulativeFees\"\n fill=\"url(#feesGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n )}\n\n {/* Cumulative Fees Line */}\n {showCumulative && (\n <Line\n type=\"natural\"\n dataKey=\"cumulativeFees\"\n stroke={colors.loss}\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n\nfunction tickFormatter(value: number): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = Math.abs(value);\n\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n\n const sign = value < 0 ? \"-\" : \"\";\n const decimalPlaces = num <= 10 ? 1 : 0;\n const rounded = num.toFixed(decimalPlaces);\n\n return `${sign}${rounded}${abbreviations[index]}`;\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Line,\n Tooltip,\n CartesianGrid,\n Cross,\n ReferenceLine,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { Box, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ChartEmptyState } from \"./chartEmptyState\";\nimport { useColors } from \"./useColors\";\n\nexport type CombinedPriceChartDataItem = {\n date: string;\n open: number | null;\n high: number | null;\n low: number | null;\n close: number | null;\n};\n\nexport type CombinedPriceChartProps = {\n data:\n | ReadonlyArray<CombinedPriceChartDataItem>\n | CombinedPriceChartDataItem[];\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\";\n isMobile?: boolean;\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n className?: string;\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length >= 1) {\n const data = payload[0].payload;\n\n // Check if price data is available\n const hasPrice = data.close !== null && data.close !== undefined;\n\n if (!hasPrice) {\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-text-base-contrast-54\">\n Price data unavailable\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2 oui-mt-1 oui-pt-2 oui-border-t oui-border-base-contrast-16\">\n <span className=\"oui-text-base-contrast-54\">Time:</span>\n <span className=\"oui-font-semibold\">{label}</span>\n </div>\n </Box>\n );\n }\n\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Open:</span>\n <span className=\"oui-font-semibold\">\n {data.open?.toFixed(2) ?? \"--\"}\n </span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">High:</span>\n <span className=\"oui-font-semibold\">\n {data.high?.toFixed(2) ?? \"--\"}\n </span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Low:</span>\n <span className=\"oui-font-semibold\">\n {data.low?.toFixed(2) ?? \"--\"}\n </span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2\">\n <span className=\"oui-text-base-contrast-54\">Close:</span>\n <span className=\"oui-font-semibold\">{data.close.toFixed(2)}</span>\n </div>\n <div className=\"oui-text-xs oui-flex oui-gap-2 oui-mt-1 oui-pt-2 oui-border-t oui-border-base-contrast-16\">\n <span className=\"oui-text-base-contrast-54\">Time:</span>\n <span className=\"oui-font-semibold\">{label}</span>\n </div>\n </Box>\n );\n }\n\n return null;\n};\n\nconst calculateOptimalInterval = (\n dataLength: number,\n aggregationWindow?: \"15m\" | \"1h\" | \"1d\",\n isMobile: boolean = false,\n): number => {\n if (dataLength <= 12 && !isMobile) return 0;\n\n let targetLabels: number;\n if (dataLength > 500) {\n targetLabels = 6;\n } else if (dataLength > 200) {\n targetLabels = 6;\n } else if (dataLength > 100) {\n targetLabels = 7;\n } else if (dataLength > 50) {\n targetLabels = 8;\n } else {\n targetLabels = 12;\n }\n\n if (isMobile) {\n targetLabels = Math.ceil(targetLabels / 2);\n }\n\n const baseInterval = Math.ceil(dataLength / targetLabels);\n\n if (aggregationWindow === \"15m\") {\n if (baseInterval >= 96) return Math.ceil(baseInterval / 56) * 56;\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 16) * 16;\n return Math.max(8, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1h\") {\n if (baseInterval >= 48) return Math.ceil(baseInterval / 28) * 28;\n if (baseInterval >= 24) return Math.ceil(baseInterval / 12) * 12;\n return Math.max(4, Math.ceil(baseInterval / 4) * 4);\n }\n\n if (aggregationWindow === \"1d\") {\n if (baseInterval >= 14) return Math.ceil(baseInterval / 14) * 14;\n if (baseInterval >= 3) return Math.ceil(baseInterval / 7) * 7;\n }\n\n return baseInterval;\n};\n\nfunction tickFormatter(value: number): string {\n return value.toFixed(2);\n}\n\nexport const CombinedPriceChart: React.FC<CombinedPriceChartProps> = (\n props,\n) => {\n const {\n data,\n aggregationWindow = \"1d\",\n isMobile = false,\n invisible,\n responsiveContainerProps,\n className,\n } = props;\n\n const colors = useColors();\n\n const xAxisInterval = useMemo(\n () => calculateOptimalInterval(data.length, aggregationWindow, isMobile),\n [data.length, aggregationWindow, isMobile],\n );\n\n // Calculate Y-axis domain with intelligent scaling and nice numbers\n // Only use close prices since we're only displaying close price line\n const yAxisDomainAndTicks = useMemo(() => {\n if (data.length === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n // Filter out null prices before calculating domain\n const closePrices = data\n .map((item) => item.close)\n .filter((price) => price !== null && price !== undefined) as number[];\n\n if (closePrices.length === 0) return { domain: [0, 1], ticks: [0, 1] };\n\n const minPrice = Math.min(...closePrices);\n const maxPrice = Math.max(...closePrices);\n\n const range = maxPrice - minPrice;\n if (range === 0)\n return {\n domain: [minPrice - 1, maxPrice + 1],\n ticks: [minPrice - 1, maxPrice + 1],\n };\n\n // Add 10% padding on each side\n const padding = range * 0.1;\n const lower = minPrice - padding;\n const upper = maxPrice + padding;\n\n // Calculate step size for nice, even spacing\n const magnitude = Math.pow(10, Math.floor(Math.log10(range)));\n // Try different interval counts to find the best even spacing\n let step = magnitude;\n const rangeWidth = upper - lower;\n\n // Find a nice step that gives us 4-6 tick marks with even spacing\n for (const divisor of [1, 2, 2.5, 5]) {\n const candidate = magnitude * divisor;\n const tickCount = Math.ceil(rangeWidth / candidate);\n if (tickCount >= 4 && tickCount <= 6) {\n step = candidate;\n break;\n }\n }\n\n // Generate evenly spaced ticks\n const roundedLower = Math.floor(lower / step) * step;\n const roundedUpper = Math.ceil(upper / step) * step;\n const ticks: number[] = [];\n for (let tick = roundedLower; tick <= roundedUpper; tick += step) {\n ticks.push(Number(tick.toFixed(10))); // Remove floating point errors\n }\n\n return { domain: [roundedLower, roundedUpper], ticks };\n }, [data]);\n\n if (invisible || data.length === 0) {\n return (\n <ChartEmptyState\n title=\"No Price Data\"\n description=\"No price data available for the selected period\"\n height=\"100%\"\n className={className}\n />\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n {...responsiveContainerProps}\n >\n <ComposedChart\n data={data as any}\n margin={{\n left: props.isMobile ? 18 : 45,\n top: 8,\n right: props.isMobile ? 18 : 24,\n bottom: props.isMobile ? 12 : 20,\n }}\n syncId=\"symbol-performance\"\n >\n <Tooltip cursor={<CustomizedCross />} content={<CustomTooltip />} />\n\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n <YAxis\n domain={yAxisDomainAndTicks.domain}\n ticks={yAxisDomainAndTicks.ticks}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n width={50}\n />\n\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n interval={xAxisInterval}\n minTickGap={50}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n {/* Close Price Line */}\n <Line\n type=\"natural\"\n dataKey=\"close\"\n stroke=\"#00B49E\"\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId, useRef } from \"react\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n Line,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n AreaChart,\n Area,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type AssetChartDataItem = {\n date: string;\n account_value: number;\n};\n\nexport type PnlLineChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: AssetChartDataItem[];\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n />\n );\n }\n\n return null;\n};\n\nexport const AssetLineChart: React.FC<PnlLineChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n const colorId = useId();\n const { isMobile } = useScreen();\n const chartComponent = isMobile ? (\n <AreaChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={(value) => tickFormatter(value)}\n />\n {!props.invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor=\"#00B49E\" offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor=\"#00B49E\" offset=\"100%\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n />\n </>\n )}\n </AreaChart>\n ) : (\n <LineChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {/* <Legend /> */}\n {!props.invisible && (\n <Line\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n />\n )}\n </LineChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId, useRef } from \"react\";\nimport {\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n AreaChart,\n Area,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport type { Props as ResponsiveContainerProps } from \"recharts/types/component/ResponsiveContainer\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { tickFormatter } from \"../utils/yTickFormatter\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\nimport { XAxisLabel } from \"./xAxisLabel\";\n\nexport type AssetChartDataItem = {\n date: string;\n account_value: number;\n};\n\nexport type PnlAreaChartProps = {\n colors?: {\n profit: string;\n loss: string;\n };\n data: AssetChartDataItem[];\n invisible?: boolean;\n responsiveContainerProps?: Omit<ResponsiveContainerProps, \"children\">;\n};\n\nconst CustomTooltip: React.FC<TooltipProps<any, any>> = (props) => {\n const { active, payload, label } = props;\n const todayStr = useRef(new Date().toISOString().split(\"T\")[0]);\n const { t } = useTranslation();\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label === todayStr.current ? t(\"chart.now\") : label}\n value={payload[0].value}\n />\n );\n }\n\n return null;\n};\n\nexport const AssetAreaChart: React.FC<PnlAreaChartProps> = (props) => {\n const { responsiveContainerProps } = props;\n const colors = useColors(props.colors);\n const colorId = useId();\n const { isMobile } = useScreen();\n const chartComponent = (\n <AreaChart\n width={530}\n height={180}\n data={props.data}\n margin={{ top: 20, right: 10, left: -20, bottom: -10 }}\n >\n <CartesianGrid vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\n <XAxis\n dataKey=\"date\"\n interval={props.data.length - 2}\n // tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tick={<XAxisLabel />}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <YAxis\n dataKey=\"account_value\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n tickFormatter={tickFormatter}\n />\n {!props.invisible && (\n <Tooltip\n cursor={{ strokeDasharray: \"3 2\", strokeOpacity: 0.16 }}\n content={<CustomTooltip />}\n />\n )}\n {!props.invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stopColor=\"#00B49E\" offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor=\"#00B49E\" offset=\"100%\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={colors.profit}\n strokeWidth={isMobile ? 1.5 : 2}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n />\n </>\n )}\n </AreaChart>\n );\n\n return (\n <ResponsiveContainer\n className={props.invisible ? \"chart-invisible\" : undefined}\n {...responsiveContainerProps}\n >\n {chartComponent}\n </ResponsiveContainer>\n );\n};\n","import React from \"react\";\nimport {\n BarChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { Box, cn } from \"@kodiak-finance/orderly-ui\";\nimport { OrderlyChartTooltip } from \"./customTooltip\";\nimport { useColors } from \"./useColors\";\n\nexport type VolChartDataItem = {\n date: string;\n volume: number;\n opacity?: string | number;\n};\n\nexport type VolChartTooltip = {\n rm?: number;\n dp?: number;\n};\n\nexport type VolChartProps = {\n colors?: { fill: string };\n data: ReadonlyArray<VolChartDataItem> | VolChartDataItem[];\n tooltip?: VolChartTooltip;\n className?: string;\n};\n\nconst RoundedRectangle = (props: any) => {\n const { fill, x, y, width, height, opacity } = props;\n const absHeight = Math.abs(height);\n\n return (\n <rect\n rx={2}\n x={x}\n y={height > 0 ? y : y + height}\n width={width}\n height={absHeight}\n stroke=\"none\"\n fill={fill}\n opacity={opacity}\n />\n );\n};\n\nconst CustomizedCross = (props: any) => {\n const { width, height, payload, stroke, fill } = props;\n\n if (payload?.[0]?.value === 0) {\n return null;\n }\n\n return (\n // @ts-ignore\n <Cross\n // y={props.y + props.top}\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst CustomTooltip = (\n props: TooltipProps<any, any> & { tooltip?: VolChartTooltip },\n) => {\n const { active, payload, label, tooltip } = props;\n\n if (payload?.[0]?.value === 0) {\n return null;\n }\n\n if (active && payload && payload.length) {\n return (\n <OrderlyChartTooltip\n label={label}\n value={payload[0].value}\n // prefix=\"Commission\"\n titleClassName=\"oui-gap-4\"\n rm={tooltip?.rm}\n dp={tooltip?.dp}\n />\n );\n }\n\n return null;\n};\n\nexport const VolBarChart: React.FC<VolChartProps> = (props) => {\n const colors = useColors(\n props.colors?.fill\n ? { profit: props.colors?.fill, loss: props.colors?.fill }\n : undefined,\n );\n\n const isEmpty =\n (props.data as any)?.reduce((pre: any, cur: any) => pre + cur.volume, 0) ===\n 0;\n\n const maxVolume = (props.data as any)?.reduce(\n (pre: any, cur: any) => (pre > cur.volume ? pre : cur.volume),\n 0,\n );\n\n const decimal = maxVolume <= 10 ? 2 : maxVolume <= 100 ? 1 : 0;\n\n return (\n // @ts-ignore\n <Box className={cn(props.className)}>\n {/* @ts-ignore */}\n <ResponsiveContainer>\n {/* @ts-ignore */}\n <BarChart\n data={props.data as any[]}\n margin={{ left: -0, top: 6, right: 0, bottom: 20 }}\n >\n {/* @ts-ignore */}\n <Tooltip\n // cursor={{ fillOpacity: 0.1 }}\n cursor={<CustomizedCross />}\n content={<CustomTooltip tooltip={props.tooltip} />}\n />\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.08}\n repeatCount={6}\n />\n {/* @ts-ignore */}\n <ReferenceLine y={0} stroke=\"#000\" />\n {/* @ts-ignore */}\n <Bar dataKey=\"volume\" shape={<RoundedRectangle />} minPointSize={1}>\n {props.data.map((entry, index) => {\n return (\n // @ts-ignore\n <Cell\n key={`cell-${index}`}\n fill={entry.volume > 0 ? colors.profit : colors.loss}\n opacity={entry.opacity}\n />\n );\n })}\n </Bar>\n {/* @ts-ignore */}\n <YAxis\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n dataKey={\"volume\"}\n tickFormatter={(value, index) => {\n if (isEmpty) return `${index * 100}`;\n return numberToHumanStyle(value, decimal);\n }}\n width={45}\n />\n {/* @ts-ignore */}\n <XAxis\n dataKey=\"date\"\n // axisLine={false}\n tickLine={false}\n interval={props.data.length - 2}\n // tick={renderQuarterTick}\n height={1}\n // scale=\"time\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"rgb(229, 231, 235)\"\n strokeOpacity={0.2}\n />\n </BarChart>\n </ResponsiveContainer>\n </Box>\n );\n};\nfunction numberToHumanStyle(number: number, decimalPlaces: number = 0): string {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n\n let index = 0;\n while (number >= 1000 && index < abbreviations.length - 1) {\n number /= 1000;\n index++;\n }\n\n const roundedNumber = toFixedWithoutRounding(number, decimalPlaces);\n\n return `${roundedNumber}${abbreviations[index]}`;\n}\n\nfunction toFixedWithoutRounding(num: number, fix: number): string {\n const numStr = num.toString();\n const decimalIndex = numStr.indexOf(\".\");\n\n if (decimalIndex === -1 || fix === 0) {\n return numStr.split(\".\")[0];\n }\n\n const cutoffIndex = decimalIndex + fix + 1;\n\n return numStr.slice(0, cutoffIndex);\n}\n","import React, { useMemo } from \"react\";\nimport {\n ComposedChart,\n XAxis,\n YAxis,\n ResponsiveContainer,\n Bar,\n Line,\n Area,\n Cell,\n Tooltip,\n CartesianGrid,\n ReferenceLine,\n Cross,\n} from \"recharts\";\nimport type { TooltipProps } from \"recharts\";\nimport { Box, cn, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport interface UnifiedChartProps {\n volumeData: any[];\n feesData: any[];\n priceData: any[];\n aggregationWindow: string;\n includeFees: boolean;\n className?: string;\n}\n\nconst CustomizedCross = (props: any) => {\n const { width, height } = props;\n return (\n <Cross\n x={props.x + props.width / 2}\n top={props.top}\n height={height}\n width={1}\n stroke={\"rgba(255,255,255,0.16)\"}\n strokeDasharray={\"3 2\"}\n fill={\"none\"}\n />\n );\n};\n\nconst UnifiedChartTooltip = (props: TooltipProps<any, any>) => {\n const { active, payload, label } = props;\n\n if (active && payload && payload.length > 0) {\n return (\n <Box\n intensity={600}\n p={3}\n r=\"md\"\n className=\"oui-flex oui-flex-col oui-gap-2\"\n >\n <div className=\"oui-text-xs oui-font-semibold\">{label}</div>\n {payload.map((entry, index) => (\n <div key={index} className=\"oui-text-xs oui-flex oui-gap-2\">\n <span style={{ color: entry.color }} className=\"oui-font-semibold\">\n {entry.name}:\n </span>\n <span>{entry.value?.toFixed(2) || 0}</span>\n </div>\n ))}\n </Box>\n );\n }\n\n return null;\n};\n\nexport const UnifiedSymbolPerformanceChart: React.FC<UnifiedChartProps> = ({\n volumeData,\n feesData,\n priceData,\n aggregationWindow,\n includeFees,\n className,\n}) => {\n // Merge all data sources by date\n const mergedData = useMemo(() => {\n const dataMap = new Map<string, any>();\n\n // Add volume data\n volumeData.forEach((item) => {\n dataMap.set(item.date, {\n ...dataMap.get(item.date),\n date: item.date,\n volume: item.volume,\n });\n });\n\n // Add fees data\n feesData.forEach((item) => {\n dataMap.set(item.date, {\n ...dataMap.get(item.date),\n date: item.date,\n fees: item.fees,\n });\n });\n\n // Add price data\n priceData.forEach((item) => {\n dataMap.set(item.date, {\n ...dataMap.get(item.date),\n date: item.date,\n open: item.open,\n high: item.high,\n low: item.low,\n close: item.close,\n });\n });\n\n return Array.from(dataMap.values());\n }, [volumeData, feesData, priceData]);\n\n if (mergedData.length === 0) {\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <div className=\"oui-text-center oui-text-base-contrast-54 oui-py-10\">\n No data available\n </div>\n </Box>\n );\n }\n\n return (\n <Box className={cn(\"oui-w-full oui-h-full\", className)}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ComposedChart\n data={mergedData}\n margin={{ left: 0, top: 10, right: 10, bottom: 20 }}\n >\n <CartesianGrid\n vertical={false}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n <XAxis\n dataKey=\"date\"\n tickLine={false}\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n stroke=\"#FFFFFF\"\n strokeOpacity={0.04}\n />\n\n {/* Left Y-axis for bars (Volume, Fees) */}\n <YAxis\n yAxisId=\"left\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n width={45}\n label={{\n value: \"Volume / Fees\",\n angle: -90,\n position: \"insideLeft\",\n }}\n />\n\n {/* Right Y-axis for price line */}\n <YAxis\n yAxisId=\"right\"\n orientation=\"right\"\n tick={{ fontSize: 10, fill: \"rgba(255,255,255,0.54)\" }}\n tickLine={false}\n axisLine={false}\n width={50}\n label={{ value: \"Price\", angle: 90, position: \"insideRight\" }}\n />\n\n <Tooltip\n cursor={<CustomizedCross />}\n content={<UnifiedChartTooltip />}\n />\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {/* Volume bars */}\n <Bar\n yAxisId=\"left\"\n dataKey=\"volume\"\n fill=\"rgba(0, 180, 158, 0.6)\"\n name=\"Volume\"\n />\n\n {/* Fees bars */}\n <Bar\n yAxisId=\"left\"\n dataKey=\"fees\"\n fill=\"rgba(255, 107, 107, 0.6)\"\n name=\"Fees\"\n />\n\n {/* Price line */}\n <Line\n yAxisId=\"right\"\n type=\"natural\"\n dataKey=\"close\"\n stroke=\"#00B49E\"\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n name=\"Price\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </ComposedChart>\n </ResponsiveContainer>\n </Box>\n );\n};\n","import plugin from \"tailwindcss/plugin\";\nimport type { PluginCreator } from \"tailwindcss/types/config\";\n\nexport const chartPlugin: PluginCreator = () =>\n plugin(function ({ addComponents, addBase }) {\n addComponents(\n {\n \".xAxis\": {\n \".recharts-cartesian-axis-tick:first-child text\": {\n \"text-anchor\": \"start\",\n },\n \".recharts-cartesian-axis-tick:last-child text\": {\n \"text-anchor\": \"end\",\n },\n },\n },\n {\n respectPrefix: false,\n },\n );\n });\n"]}
|