mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* envs and feature setup * home page layout * cross-chain txs page * cross-chain transfers page * cross-chain transfers on tx page * cross-chain messages on tx page * cross-chain tx page * cross-chain tx details token transfers * stats and counters for lists * migrate to new API version * add swagger * mobile lists * placeholder views on address page * tests * fix adaptive tabs initial state when there is only one tab in the list * tweaks * bug fixes * fix tests * update screenshots * migrate to new api version * add chain label tooltip, copy button to txs in lists and same address highlight * list views on address page * fix tests * fix links to current address in the list views * update tooltips * update tables layout * review fixes * fix spelling * update screenshots * update screenshot
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import type { BadgeProps as ChakraBadgeProps } from '@chakra-ui/react';
|
|
import { chakra, Badge as ChakraBadge } from '@chakra-ui/react';
|
|
import React from 'react';
|
|
|
|
import { TruncatedTextTooltip } from '../components/truncation/TruncatedTextTooltip';
|
|
import { Skeleton } from './skeleton';
|
|
|
|
export interface BadgeProps extends Omit<ChakraBadgeProps, 'colorScheme'> {
|
|
loading?: boolean;
|
|
startElement?: React.ReactNode;
|
|
endElement?: React.ReactNode;
|
|
truncated?: boolean;
|
|
}
|
|
|
|
export const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
|
|
function Badge(props, ref) {
|
|
const { loading, startElement, children, asChild = true, truncated = false, endElement, ...rest } = props;
|
|
|
|
const child = children ? <chakra.span overflow="hidden" textOverflow="ellipsis">{ children }</chakra.span> : null;
|
|
|
|
const childrenElement = truncated ? (
|
|
<TruncatedTextTooltip label={ children }>
|
|
{ child }
|
|
</TruncatedTextTooltip>
|
|
) : child;
|
|
|
|
return (
|
|
<Skeleton loading={ loading } asChild={ asChild } ref={ ref }>
|
|
<ChakraBadge display="inline-flex" alignItems="center" whiteSpace="nowrap" { ...rest }>
|
|
{ startElement }
|
|
{ childrenElement }
|
|
{ endElement }
|
|
</ChakraBadge>
|
|
</Skeleton>
|
|
);
|
|
});
|