import { useMemo } from 'react';
import { FormatNumberTokens } from 'src/components';
import { CYBER } from '../../../../utils/config';
import DonutChart from '../../../../components/DonutChart';
import ContainerGradient from '../../../../components/containerGradient/ContainerGradient';
import { GIFT_ICON } from '../../utils';
import { ProgressBar } from '../progressCard';
import styles from './ReleaseStatus.module.scss';

type DataReleaseStatus = {
  availableRelease: number;
  released: number;
  leftRelease: number;
  alreadyClaimed?: number;
};

const dataReleaseStatusMap = (data: DataReleaseStatus) => {
  const dataTotal = [
    {
      title: 'available for release',
      color: '#ED2BE7',
      value: data.availableRelease,
    },
    {
      title: 'released',
      color: '#76FF03',
      value: data.released,
    },
    {
      title: 'left to release',
      color: '#FF5C00',
      value: data.leftRelease,
    },
  ];

  if (data.alreadyClaimed) {
    dataTotal.splice(2, 0, {
      title: 'already claimed',
      color: '#525252',
      value: data.alreadyClaimed,
    });
  }
  return dataTotal;
};

type Item = {
  title: string;
  color: string;
  value: number;
};

type Status = 'red' | 'green';

type Props = {
  amountGiftValue: number;
  status?: Status;
  progress: number;
  data: DataReleaseStatus;
  nextRelease: number;
};

function RowItem({ item }: { item: Item }) {
  return (
    <div className={styles.RowItemReleaseStatus}>
      <div style={{ color: item.color }}>{item.title}</div>
      <div>
        <FormatNumberTokens value={item.value} text={CYBER.DENOM_CYBER} />
      </div>
    </div>
  );
}

function ReleaseStatus({
  amountGiftValue = 0,
  status = 'green',
  progress = 0,
  data,
  nextRelease,
}: Props) {
  const title = (
    <div className={styles.title}>
      <div>release status {GIFT_ICON}</div>
      <div>
        <FormatNumberTokens value={amountGiftValue} text={CYBER.DENOM_CYBER} />
      </div>
    </div>
  );

  const renderDataDonutChart = useMemo(
    () => dataReleaseStatusMap(data),
    [data]
  );

  return (
    <ContainerGradient
      title={title}
      closedTitle={title}
      styleLampContent={status}
      userStyleContent={{ height: '475px', display: 'grid', gap: '30px' }}
    >
      <div className={styles.detailsReleaseStatus}>
        <div>
          <DonutChart data={renderDataDonutChart} />
        </div>
        <div className={styles.containerRowItem}>
          {renderDataDonutChart.map((item) => (
            <RowItem key={item.title} item={item} />
          ))}
        </div>
      </div>

      <div className={styles.descriptionRules}>
        Only the most dexterous will be lucky. The early birds get a higher
        bonus gift release in every 1000 new addresses registered.
      </div>

      <div>
        {nextRelease > 0 && (
          <div className={styles.nextRelease}>
            <span>next release after</span>
            <span className={styles.nextReleaseValue}>
              {nextRelease} addresses
            </span>
          </div>
        )}

        <ProgressBar progress={progress} />
        <div className={styles.containerProcentValue}>
          <div>0%</div>
          <div>100%</div>
        </div>
      </div>
    </ContainerGradient>
  );
}

export default ReleaseStatus;

Synonyms

cyb/src/index.tsx
pussy-ts/src/index.tsx
bostrom.network/src/pages/Index.tsx
pussy-landing/src/pages/index.tsx
pussy.meme/src/pages/index.tsx
pussy-ts/src/containers/txs/index.tsx
pussy-ts/src/containers/mint/index.tsx
cyb/src/containers/mint/index.tsx
pussy-ts/src/components/ButtonSwap/index.tsx
pussy-ts/src/components/denom/index.tsx
cyb/src/containers/Objects/index.tsx
cyb/src/components/btnGrd/index.tsx
pussy-ts/src/components/Select/index.tsx
cyb/src/components/actionBar/index.tsx
pussy-ts/src/components/BandwidthBar/index.tsx
cyb/src/components/Select/index.tsx
pussy-ts/src/containers/portal/index.tsx
pussy-ts/src/components/btnGrd/index.tsx
cyb/src/components/TextMarkdown/index.tsx
cyb/src/containers/energy/index.tsx
pussy-ts/src/components/MainContainer/index.tsx
pussy-ts/src/components/actionBar/index.tsx
cyb/src/containers/portal/index.tsx
cyb/src/components/ButtonSwap/index.tsx
cyb/src/containers/nebula/index.tsx
pussy-ts/src/components/DonutChart/index.tsx
cyb/src/components/DonutChart/index.tsx
pussy-ts/src/containers/nebula/index.tsx
cyb/src/components/BandwidthBar/index.tsx
pussy-ts/src/containers/energy/index.tsx
cyb/src/components/denom/index.tsx
cyb/src/containers/sigma/index.tsx
cyb/src/components/Input/index.tsx
pussy-ts/src/containers/sigma/index.tsx
pussy-ts/src/containers/taverna/index.tsx
pussy-ts/src/components/Input/index.tsx
cyb/src/containers/blok/index.tsx
cyb/src/components/PDF/index.tsx
cyb/src/containers/txs/index.tsx
cyb/src/containers/taverna/index.tsx
cyb/src/components/MainContainer/index.tsx
pussy-ts/src/components/TextMarkdown/index.tsx
pussy-ts/src/components/PDF/index.tsx
cyb/src/containers/portal/citizenship/index.tsx
pussy-landing/src/components/xp/btnGrd/index.tsx
cyb/src/containers/portal/pasport/index.tsx
pussy-landing/src/components/xp/stars/index.tsx
cyb/src/components/buttons/ButtonIcon/index.tsx
cyb/src/containers/wasm/codes/index.tsx
pussy-ts/src/features/ipfs/Drive/index.tsx
pussy-ts/src/containers/portal/gift/index.tsx
pussy-ts/src/features/ipfs/ipfsSettings/index.tsx
pussy-ts/src/components/buttons/ButtonIcon/index.tsx
pussy-ts/src/containers/portal/release/index.tsx
cyb/src/containers/portal/release/index.tsx
cyb/src/features/ipfs/Drive/index.tsx
pussy-ts/src/containers/portal/pasport/index.tsx
cyb/src/features/ipfs/ipfsSettings/index.tsx
pussy-ts/src/containers/portal/citizenship/index.tsx
cyb/src/containers/portal/gift/index.tsx
cyb/src/components/contentIpfs/component/gateway/index.tsx
pussy-ts/src/components/contentIpfs/component/gateway/index.tsx
pussy-ts/src/containers/sigma/components/CardPassport/index.tsx
cyb/src/containers/sigma/components/CardPassport/index.tsx
cyb/src/components/contentIpfs/component/img/index.tsx
pussy-ts/src/components/contentIpfs/component/img/index.tsx
cyb/src/containers/portal/components/ActionBar/index.tsx
pussy-ts/src/components/contentIpfs/component/link/index.tsx
cyb/src/containers/portal/components/ReleaseStatus/index.tsx
cyb/src/containers/portal/components/stars/index.tsx
pussy-ts/src/containers/portal/components/stars/index.tsx
cyb/src/components/contentIpfs/component/link/index.tsx
pussy-ts/src/containers/sigma/components/cardUi/TitleCard/index.tsx
cyb/src/containers/sigma/components/cardUi/TitleCard/index.tsx
cyb/src/containers/sigma/components/cardUi/RowBalancesDetails/index.tsx
pussy-ts/src/containers/sigma/components/cardUi/RowBalancesDetails/index.tsx

Neighbours