From 8680417bdee3d65bc4472b7cb17e6b6406641b7e Mon Sep 17 00:00:00 2001
From: Kacper Kruczek <>
Date: Thu, 24 Feb 2022 12:19:09 +0100
Subject: [PATCH 1/3] feat(chip): created chip componentn
Chip #33
---
src/ui/chip/chip.component.tsx | 9 +++++++++
src/ui/chip/chip.model.tsx | 5 +++++
src/ui/chip/chip.utils.ts | 10 ++++++++++
src/ui/chip/index.ts | 3 +++
src/ui/index.ts | 1 +
5 files changed, 28 insertions(+)
create mode 100644 src/ui/chip/chip.component.tsx
create mode 100644 src/ui/chip/chip.model.tsx
create mode 100644 src/ui/chip/chip.utils.ts
create mode 100644 src/ui/chip/index.ts
diff --git a/src/ui/chip/chip.component.tsx b/src/ui/chip/chip.component.tsx
new file mode 100644
index 0000000..ac0a0f5
--- /dev/null
+++ b/src/ui/chip/chip.component.tsx
@@ -0,0 +1,9 @@
+import React from 'react';
+import clsx from 'clsx';
+
+import { BaseChipProps } from './chip.model';
+import { getChipClasses } from './chip.utils';
+
+export const Chip = ({ label, outlined, className }: BaseChipProps) => (
+
{label}
+);
diff --git a/src/ui/chip/chip.model.tsx b/src/ui/chip/chip.model.tsx
new file mode 100644
index 0000000..c7194c5
--- /dev/null
+++ b/src/ui/chip/chip.model.tsx
@@ -0,0 +1,5 @@
+export type BaseChipProps = {
+ label: string;
+ outlined?: boolean;
+ className?: string;
+};
diff --git a/src/ui/chip/chip.utils.ts b/src/ui/chip/chip.utils.ts
new file mode 100644
index 0000000..e589a04
--- /dev/null
+++ b/src/ui/chip/chip.utils.ts
@@ -0,0 +1,10 @@
+import clsx from 'clsx';
+
+export const getChipClasses = (outlined: boolean = false) =>
+ clsx(
+ 'px-4 py-2 rounded-full text-gray-500 font-semibold text-sm flex align-center w-max cursor-pointer active:bg-gray-300 transition duration-300 ease',
+ {
+ ' border border-gray-300': outlined,
+ ' bg-gray-200 border border-transparent': !outlined,
+ }
+ );
diff --git a/src/ui/chip/index.ts b/src/ui/chip/index.ts
new file mode 100644
index 0000000..d5121b0
--- /dev/null
+++ b/src/ui/chip/index.ts
@@ -0,0 +1,3 @@
+export * from './chip.component';
+export * from './chip.model';
+export * from './chip.utils';
diff --git a/src/ui/index.ts b/src/ui/index.ts
index 52ab414..676c692 100644
--- a/src/ui/index.ts
+++ b/src/ui/index.ts
@@ -1,5 +1,6 @@
export * from './alert';
export * from './button';
+export * from './chip';
export * from './date-format';
export * from './label';
export * from './pagination';
From b722870d74d25f6cae147faf21c8088869f8d0cb Mon Sep 17 00:00:00 2001
From: Kacper Kruczek <>
Date: Thu, 24 Feb 2022 12:19:38 +0100
Subject: [PATCH 2/3] test(chip): added simple render test for chip component
---
src/ui/chip/chip.spec.tsx | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 src/ui/chip/chip.spec.tsx
diff --git a/src/ui/chip/chip.spec.tsx b/src/ui/chip/chip.spec.tsx
new file mode 100644
index 0000000..e02f106
--- /dev/null
+++ b/src/ui/chip/chip.spec.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import { axe } from 'jest-axe';
+
+import { Chip } from './chip.component';
+
+describe('Chip', () => {
+ test('should render', async () => {
+ const { container } = render();
+
+ expect(screen.getByText('test')).toBeInTheDocument();
+ expect(await axe(container)).toHaveNoViolations();
+ });
+});
From 4052ebb941300e94eda0b4d850fe7b533723f717 Mon Sep 17 00:00:00 2001
From: Kacper Kruczek <>
Date: Thu, 24 Feb 2022 12:23:43 +0100
Subject: [PATCH 3/3] feat(chip): created story for chip component
---
src/i18n/locales/storybook.json | 3 ++-
src/ui/chip/chip.stories.tsx | 35 +++++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 1 deletion(-)
create mode 100644 src/ui/chip/chip.stories.tsx
diff --git a/src/i18n/locales/storybook.json b/src/i18n/locales/storybook.json
index 39a993d..761f6ee 100644
--- a/src/i18n/locales/storybook.json
+++ b/src/i18n/locales/storybook.json
@@ -17,6 +17,7 @@
"BUTTON": "Button",
"BUTTON_LEFT": "Element on left",
"BUTTON_RIGHT": "Element on right",
- "BUTTON_BOTH": "Elements on both"
+ "BUTTON_BOTH": "Elements on both",
+ "CHIP": "Example Chip"
}
}
diff --git a/src/ui/chip/chip.stories.tsx b/src/ui/chip/chip.stories.tsx
new file mode 100644
index 0000000..0abb59d
--- /dev/null
+++ b/src/ui/chip/chip.stories.tsx
@@ -0,0 +1,35 @@
+import React from 'react';
+import { useIntl } from 'react-intl';
+import { ComponentMeta, ComponentStory } from '@storybook/react';
+
+import { DefaultTestProviders } from '../../utils';
+import { Chip } from './chip.component';
+
+export default {
+ title: 'Atoms/Chip',
+ component: Chip,
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ ],
+ argTypes: {
+ outlined: {
+ defaultValue: false,
+
+ control: {
+ type: 'boolean',
+ },
+ },
+ },
+} as ComponentMeta;
+
+export const Default: ComponentStory = (args) => {
+ const intl = useIntl();
+
+ return (
+
+ );
+};