@kodiak-finance/orderly-chart 2.8.16-rc.4 → 2.8.16-rc.5
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.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- 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":["require_createPlugin","__commonJSMin","exports","_default","createPlugin","plugin","config","pluginFunction","configFunction","optionsFunction","options","require_create_plugin","_createPlugin","_interop_require_default","obj","require_plugin","module","tickFormatter","value","absValue","dp","formatted","numberToHumanStyle","OrderlyChartTooltip","props","label","prefix","unit","coloring","rm","jsxs","Box","Flex","jsx","Text","getThemeColors","root","computedStyle","convertToRGB","color","useColors","colors","useMemo","themeColors","RoundedRectangle","fill","x","y","width","height","absHeight","XAxisLabel","stroke","payload","index","containerWidth","t","useTranslation","_x","CustomizedCross","Cross","CustomTooltip","active","todayStr","useRef","PnLBarChart","invisible","data","responsiveContainerProps","widthRef","ResponsiveContainer","cn","BarChart","Tooltip","CartesianGrid","ReferenceLine","Bar","entry","Cell","YAxis","XAxis","dataTransfer","series","acc","item","PnlLineChart","isMobile","useScreen","chartComponent","LineChart","Line","PnlAreaChart","colorId","useId","AreaChart","Fragment","Area","ChartEmptyState","title","description","className","BarChartIcon","formatValueWithSign","getValueColor","barValue","p","cumulativeValue","formattedDate","barColor","calculateOptimalInterval","dataLength","aggregationWindow","targetLabels","baseInterval","transformToCumulative","cumulative","CombinedPnLChart","transformedData","xAxisInterval","yAxisDomain","pnlValues","cumulativeValues","minValue","maxValue","range","padding","lower","upper","magnitude","step","roundedLower","roundedUpper","ComposedChart","abbreviations","num","sign","decimalPlaces","rounded","volumeValue","CombinedVolumeChart","volumeValues","feesValue","CombinedFeesChart","feesValues","CombinedPriceChart","closePrices","price","minPrice","maxPrice","AssetLineChart","AssetAreaChart","opacity","tooltip","VolBarChart","isEmpty","pre","cur","maxVolume","decimal","number","toFixedWithoutRounding","fix","numStr","decimalIndex","cutoffIndex","UnifiedChartTooltip","UnifiedSymbolPerformanceChart","volumeData","feesData","priceData","includeFees","mergedData","dataMap","import_plugin","chartPlugin","addComponents","addBase"],"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 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=\"#608CFF\" offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor=\"#608CFF\" 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 />\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};\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\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 CustomTooltip = (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 // Get line (cumulative PnL) value\n const lineData = payload.find((p) => p.dataKey === \"cumulativePnL\");\n const cumulativeValue = lineData?.value ?? 0;\n\n const formattedDate = label;\n const barColor = getValueColor(barValue, colors);\n const cumulativeColor = getValueColor(cumulativeValue, 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-font-semibold\">\n {formattedDate}:{\" \"}\n <span style={{ color: barColor }}>\n {formatValueWithSign(barValue)} USDC\n </span>\n </div>\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 {formatValueWithSign(cumulativeValue)} USDC\n </span>\n </div>\n </Box>\n );\n }\n\n return null;\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 } = 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 = transformedData.map((item) => item.cumulativePnL);\n\n const minValue = Math.min(...pnlValues, ...cumulativeValues, 0);\n const maxValue = Math.max(...pnlValues, ...cumulativeValues, 0);\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]);\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 cursor={<CustomizedCross />} content={<CustomTooltip />} />\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 <Area\n type=\"natural\"\n dataKey=\"cumulativePnL\"\n fill=\"url(#cumulativeGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n\n {/* Cumulative PnL Line */}\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 </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 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};\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\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value}`;\n};\n\nconst CustomTooltip = (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 cumulativeData = payload.find(\n (p) => p.dataKey === \"cumulativeVolume\",\n );\n const cumulativeValue = cumulativeData?.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-font-semibold\">\n {formattedDate}: {formatValueWithSign(volumeValue)} USDC\n </div>\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 {formatValueWithSign(cumulativeValue)} USDC\n </span>\n </div>\n </Box>\n );\n }\n\n return null;\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 } = 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 maxValue = Math.max(...volumeValues, 0);\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]);\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 <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={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\n ? \"rgba(255,255,255,0.2)\"\n : colors.profit\n }\n opacity={0.8}\n />\n ))}\n </Bar>\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};\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\n\nconst formatValueWithSign = (value: number): string => {\n const sign = value > 0 ? \"+\" : \"\";\n return `${sign}${value.toFixed(2)}`;\n};\n\nconst CustomTooltip = (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 cumulativeData = payload.find((p) => p.dataKey === \"cumulativeFees\");\n const cumulativeValue = cumulativeData?.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-font-semibold\">\n {formattedDate}: {formatValueWithSign(feesValue)} USDC\n </div>\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 {formatValueWithSign(cumulativeValue)} USDC\n </span>\n </div>\n </Box>\n );\n }\n\n return null;\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 } = 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 feesValues = transformedData.map((item) => item.fees);\n const cumulativeValues = transformedData.map((item) => item.cumulativeFees);\n\n const minValue = Math.min(...feesValues, ...cumulativeValues, 0);\n const maxValue = Math.max(...feesValues, ...cumulativeValues, 0);\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]);\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 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={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=\"fees\"\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.fees === 0\n ? \"rgba(255,255,255,0.2)\"\n : colors.loss\n }\n opacity={0.8}\n />\n ))}\n </Bar>\n\n {/* Cumulative Fees Area with gradient fill */}\n <Area\n type=\"natural\"\n dataKey=\"cumulativeFees\"\n fill=\"url(#feesGradient)\"\n stroke=\"none\"\n isAnimationActive={false}\n />\n\n {/* Cumulative Fees Line */}\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 </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 formatFeesValue(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 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 yAxisDomain = useMemo(() => {\n if (data.length === 0) return [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 [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) return [minPrice - 1, maxPrice + 1];\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 // 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 }, [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={yAxisDomain}\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\">\n {label}\n </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, { ...dataMap.get(item.date), date: item.date, volume: item.volume });\n });\n\n // Add fees data\n feesData.forEach((item) => {\n dataMap.set(item.date, { ...dataMap.get(item.date), date: item.date, fees: item.fees });\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 vertical={false} stroke=\"#FFFFFF\" strokeOpacity={0.04} />\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={{ value: \"Volume / Fees\", angle: -90, position: \"insideLeft\" }}\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 cursor={<CustomizedCross />} content={<UnifiedChartTooltip />} />\n <ReferenceLine y={0} stroke=\"rgba(0,0,0,0.04)\" />\n\n {/* Volume bars */}\n <Bar yAxisId=\"left\" dataKey=\"volume\" fill=\"rgba(0, 180, 158, 0.6)\" name=\"Volume\" />\n\n {/* Fees bars */}\n <Bar yAxisId=\"left\" dataKey=\"fees\" fill=\"rgba(255, 107, 107, 0.6)\" name=\"Fees\" />\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":["require_createPlugin","__commonJSMin","exports","_default","createPlugin","plugin","config","pluginFunction","configFunction","optionsFunction","options","require_create_plugin","_createPlugin","_interop_require_default","obj","require_plugin","module","tickFormatter","value","absValue","dp","formatted","numberToHumanStyle","OrderlyChartTooltip","props","label","prefix","unit","coloring","rm","jsxs","Box","Flex","jsx","Text","getThemeColors","root","computedStyle","convertToRGB","color","useColors","colors","useMemo","themeColors","RoundedRectangle","fill","x","y","width","height","absHeight","XAxisLabel","stroke","payload","index","containerWidth","t","useTranslation","_x","CustomizedCross","Cross","CustomTooltip","active","todayStr","useRef","PnLBarChart","invisible","data","responsiveContainerProps","widthRef","ResponsiveContainer","cn","BarChart","Tooltip","CartesianGrid","ReferenceLine","Bar","entry","Cell","YAxis","XAxis","dataTransfer","series","acc","item","PnlLineChart","isMobile","useScreen","chartComponent","LineChart","Line","PnlAreaChart","colorId","useId","AreaChart","Fragment","Area","ChartEmptyState","title","description","className","BarChartIcon","formatValueWithSign","getValueColor","createCustomTooltip","showCumulative","barValue","p","formattedDate","barColor","cumulativeValue","calculateOptimalInterval","dataLength","aggregationWindow","targetLabels","baseInterval","transformToCumulative","cumulative","CombinedPnLChart","transformedData","xAxisInterval","yAxisDomain","pnlValues","cumulativeValues","valuesToConsider","minValue","maxValue","range","padding","lower","upper","magnitude","step","roundedLower","roundedUpper","ComposedChart","abbreviations","num","sign","decimalPlaces","rounded","volumeValue","CombinedVolumeChart","volumeValues","feesValue","CombinedFeesChart","yAxisDomainAndTicks","feesValues","rangeWidth","divisor","candidate","tickCount","ticks","tick","CombinedPriceChart","closePrices","price","minPrice","maxPrice","AssetLineChart","AssetAreaChart","opacity","tooltip","VolBarChart","isEmpty","pre","cur","maxVolume","decimal","number","toFixedWithoutRounding","fix","numStr","decimalIndex","cutoffIndex","UnifiedChartTooltip","UnifiedSymbolPerformanceChart","volumeData","feesData","priceData","includeFees","mergedData","dataMap","import_plugin","chartPlugin","addComponents","addBase"],"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 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=\"#608CFF\" offset=\"0%\" stopOpacity={0.5} />\n <stop stopColor=\"#608CFF\" 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 />\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"]}
|