diff --git a/libs/market-depth/src/lib/orderbook-row.tsx b/libs/market-depth/src/lib/orderbook-row.tsx index 0cd191717..9379f352c 100644 --- a/libs/market-depth/src/lib/orderbook-row.tsx +++ b/libs/market-depth/src/lib/orderbook-row.tsx @@ -26,7 +26,7 @@ const CumulationBar = ({
{ return compactRows(bids, VolumeType.bid, resolution); }, [bids, resolution]); + const previousMidPrice = usePrevious(midPrice); + const iconRef = useRef( + + + + ); + const arrowIcon = useMemo(() => { + if (previousMidPrice !== midPrice) { + iconRef.current = ( + midPrice + ? 'text-market-red dark:text-market-red' + : 'text-market-green-600 dark:text-market-green' + )} + > + midPrice + ? VegaIconNames.ARROW_DOWN + : VegaIconNames.ARROW_UP + } + /> + + ); + } + return iconRef.current; + }, [previousMidPrice, midPrice]); return (
- - {({ height }) => { + + {({ width, height }) => { const limit = Math.max( 1, Math.floor((height - midHeight) / 2 / (rowHeight + rowGap)) @@ -116,6 +145,7 @@ export const Orderbook = ({ className="overflow-hidden grid" data-testid="orderbook-grid-element" style={{ + width: width + 'px', height: height + 'px', gridTemplateRows: `1fr ${midHeight}px 1fr`, // cannot use tailwind here as tailwind will not parse a class string with interpolation }} @@ -140,6 +170,7 @@ export const Orderbook = ({ {addDecimalsFormatNumber(midPrice, decimalPlaces)} {assetSymbol} + {arrowIcon} )}
diff --git a/libs/ui-toolkit/src/components/icon/vega-icons/svg-icons/icon-arrow-up.tsx b/libs/ui-toolkit/src/components/icon/vega-icons/svg-icons/icon-arrow-up.tsx new file mode 100644 index 000000000..705261d29 --- /dev/null +++ b/libs/ui-toolkit/src/components/icon/vega-icons/svg-icons/icon-arrow-up.tsx @@ -0,0 +1,18 @@ +export const IconArrowUp = ({ size = 16 }: { size: number }) => { + return ( + + + + ); +}; diff --git a/libs/ui-toolkit/src/components/icon/vega-icons/svg-icons/icon-bullet.tsx b/libs/ui-toolkit/src/components/icon/vega-icons/svg-icons/icon-bullet.tsx new file mode 100644 index 000000000..09e846c84 --- /dev/null +++ b/libs/ui-toolkit/src/components/icon/vega-icons/svg-icons/icon-bullet.tsx @@ -0,0 +1,7 @@ +export const IconBullet = ({ size = 16 }: { size: number }) => { + return ( + + + + ); +}; diff --git a/libs/ui-toolkit/src/components/icon/vega-icons/vega-icon-record.ts b/libs/ui-toolkit/src/components/icon/vega-icons/vega-icon-record.ts index 6106d2bcf..b18efee75 100644 --- a/libs/ui-toolkit/src/components/icon/vega-icons/vega-icon-record.ts +++ b/libs/ui-toolkit/src/components/icon/vega-icons/vega-icon-record.ts @@ -1,6 +1,8 @@ import { IconArrowDown } from './svg-icons/icon-arrow-down'; +import { IconArrowUp } from './svg-icons/icon-arrow-up'; import { IconArrowRight } from './svg-icons/icon-arrow-right'; import { IconBreakdown } from './svg-icons/icon-breakdown'; +import { IconBullet } from './svg-icons/icon-bullet'; import { IconChevronDown } from './svg-icons/icon-chevron-down'; import { IconChevronLeft } from './svg-icons/icon-chevron-left'; import { IconChevronUp } from './svg-icons/icon-chevron-up'; @@ -24,8 +26,10 @@ import { IconWithdraw } from './svg-icons/icon-withdraw'; export enum VegaIconNames { ARROW_DOWN = 'arrow-down', + ARROW_UP = 'arrow-up', ARROW_RIGHT = 'arrow-right', BREAKDOWN = 'breakdown', + BULLET = 'bullet', CHEVRON_DOWN = 'chevron-down', CHEVRON_LEFT = 'chevron-left', CHEVRON_UP = 'chevron-up', @@ -53,6 +57,7 @@ export const VegaIconNameMap: Record< ({ size }: { size: number }) => JSX.Element > = { 'arrow-down': IconArrowDown, + 'arrow-up': IconArrowUp, 'arrow-right': IconArrowRight, 'chevron-down': IconChevronDown, 'chevron-left': IconChevronLeft, @@ -61,6 +66,7 @@ export const VegaIconNameMap: Record< 'question-mark': IconQuestionMark, 'trend-up': IconTrendUp, breakdown: IconBreakdown, + bullet: IconBullet, copy: IconCopy, cross: IconCross, deposit: IconDeposit,