All files / libs/payout-definition/plans/views/hub/rule-designer/src/lib/template-drawer/rule-template-header RuleTemplateHeader.tsx

0% Statements 0/53
0% Branches 0/1
0% Functions 0/1
0% Lines 0/53

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54                                                                                                           
import { IconArrowLeft, IconX } from '@tabler/icons-react';
import { memo, useCallback, type ReactNode } from 'react';
import { FormattedMessage } from 'react-intl';

import { Group, IconButton, Typography } from '@allshares/studio-design-system';

import { useDesignerTemplateDrawerContext } from '../RuleTemplateDrawer.context';

interface RuleTemplateDrawerHeaderProps {
  readonly title: ReactNode;
  readonly withBackButton?: boolean;
}

export const RuleTemplateDrawerHeader = memo(function RuleTemplateDrawerHeader({
  title,
  withBackButton = false,
}: RuleTemplateDrawerHeaderProps) {
  const { closeRuleTemplateDrawer, setSelectedRuleTemplate } = useDesignerTemplateDrawerContext();

  const handleClickBackButton = useCallback(() => {
    setSelectedRuleTemplate(null);
  }, [setSelectedRuleTemplate]);

  return (
    <Group
      align="center"
      justify="space-between"
    >
      <Group
        align="center"
        gap={8}
      >
        {!!withBackButton && (
          <IconButton
            icon={<IconArrowLeft />}
            label={<FormattedMessage defaultMessage="Back to template selection" />}
            size="medium"
            onClick={handleClickBackButton}
          />
        )}

        <Typography variant="heading4Bold">{title}</Typography>
      </Group>

      <IconButton
        icon={<IconX />}
        label={<FormattedMessage defaultMessage="Close" />}
        size="small"
        onClick={closeRuleTemplateDrawer}
      />
    </Group>
  );
});