From 7ce3993ab5c16c8efdf1a6968fb904d9d7931f74 Mon Sep 17 00:00:00 2001 From: Nuzhy-Deriv Date: Fri, 20 Oct 2023 10:52:56 +0800 Subject: [PATCH] chore: account comparison block --- libs/blocks/src/index.ts | 1 + .../account-comparison.spec.tsx | 33 ++++++++++++++++ .../account-comparison.stories.tsx | 27 +++++++++++++ .../src/lib/account-comparison/index.tsx | 38 +++++++++++++++++++ .../card-feature/card-feature.spec.tsx | 2 +- 5 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 libs/blocks/src/lib/account-comparison/account-comparison.spec.tsx create mode 100644 libs/blocks/src/lib/account-comparison/account-comparison.stories.tsx create mode 100644 libs/blocks/src/lib/account-comparison/index.tsx diff --git a/libs/blocks/src/index.ts b/libs/blocks/src/index.ts index f07204480..5d9f322f0 100644 --- a/libs/blocks/src/index.ts +++ b/libs/blocks/src/index.ts @@ -1,3 +1,4 @@ +export * from './lib/account-comparison'; export * from './lib/stat'; export * from './lib/navigation'; export * from './lib/navigation/mobile/mobile.nav-toggle'; diff --git a/libs/blocks/src/lib/account-comparison/account-comparison.spec.tsx b/libs/blocks/src/lib/account-comparison/account-comparison.spec.tsx new file mode 100644 index 000000000..ffe02f425 --- /dev/null +++ b/libs/blocks/src/lib/account-comparison/account-comparison.spec.tsx @@ -0,0 +1,33 @@ +import { render } from '@testing-library/react'; +import '@testing-library/jest-dom'; + +import AccountComparison from '.'; +import { Heading } from '@deriv/quill-design'; + +const Content = () => This is a heading content; + +describe('AccountComparison', () => { + it('renders with correct class names and content', () => { + const className = 'text-heading-h2'; + const title = 'This is the title'; + const description = 'Description here'; + + const { getByText } = render( + , + ); + const titleElement = getByText(title); + + //renders with correct classname + expect(titleElement).toHaveClass(className); + + //renders with the correct title + expect(getByText(title)).toBeInTheDocument(); + + //renders with the correct description + expect(getByText(description)).toBeInTheDocument(); + }); +}); diff --git a/libs/blocks/src/lib/account-comparison/account-comparison.stories.tsx b/libs/blocks/src/lib/account-comparison/account-comparison.stories.tsx new file mode 100644 index 000000000..cc90ca656 --- /dev/null +++ b/libs/blocks/src/lib/account-comparison/account-comparison.stories.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import AccountComparison from '.'; + +const meta = { + title: 'Blocks/AccountComparison', + component: AccountComparison, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + className: '', + title: 'Title here', + description: + 'Description goes here description goes here description goes here description goes here', + content: () => ( + Placeholder + ), + }, +}; diff --git a/libs/blocks/src/lib/account-comparison/index.tsx b/libs/blocks/src/lib/account-comparison/index.tsx new file mode 100644 index 000000000..3dbfc6671 --- /dev/null +++ b/libs/blocks/src/lib/account-comparison/index.tsx @@ -0,0 +1,38 @@ +import { FluidContainer, Heading, Text, Section } from '@deriv/quill-design'; +import clsx from 'clsx'; + +export interface AccountComparisonProps { + className?: string; + title?: string; + description?: string; + content: React.FC; +} + +const AccountComparison = ({ + className, + title, + description, + content: Content, +}: AccountComparisonProps) => { + return ( +
+ + {(title || description) && ( +
+ {title && {title}} + {description && {description}} +
+ )} + {Content && } +
+
+ ); +}; + +export default AccountComparison; diff --git a/libs/blocks/src/lib/features/card-feature/card-feature.spec.tsx b/libs/blocks/src/lib/features/card-feature/card-feature.spec.tsx index 0d505d489..6c561695c 100644 --- a/libs/blocks/src/lib/features/card-feature/card-feature.spec.tsx +++ b/libs/blocks/src/lib/features/card-feature/card-feature.spec.tsx @@ -55,7 +55,7 @@ describe('CardContent', () => { , );