diff --git a/packages/store-ui/src/atoms/Badge/Badge.test.tsx b/packages/store-ui/src/atoms/Badge/Badge.test.tsx
new file mode 100644
index 0000000000..d892c932d9
--- /dev/null
+++ b/packages/store-ui/src/atoms/Badge/Badge.test.tsx
@@ -0,0 +1,14 @@
+import React from 'react'
+import { render } from '@testing-library/react'
+
+import Badge from './Badge'
+
+describe('Badge', () => {
+ it('should have `data-store-badge` attribute', () => {
+ const { getByText } = render(-25%)
+
+ const renderedBadge = getByText('-25%')
+
+ expect(renderedBadge).toHaveAttribute('data-store-badge')
+ })
+})
diff --git a/packages/store-ui/src/atoms/Badge/Badge.tsx b/packages/store-ui/src/atoms/Badge/Badge.tsx
new file mode 100644
index 0000000000..64cc774252
--- /dev/null
+++ b/packages/store-ui/src/atoms/Badge/Badge.tsx
@@ -0,0 +1,23 @@
+import type { ReactNode } from 'react'
+import React, { forwardRef } from 'react'
+
+export interface BadgeProps {
+ /**
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
+ */
+ testId?: string
+ children?: ReactNode
+}
+
+const Badge = forwardRef(function Badge(
+ { testId = 'store-badge', children }: BadgeProps,
+ ref
+) {
+ return (
+
+ {children}
+
+ )
+})
+
+export default Badge
diff --git a/packages/store-ui/src/atoms/Badge/index.ts b/packages/store-ui/src/atoms/Badge/index.ts
new file mode 100644
index 0000000000..b6e18e76b5
--- /dev/null
+++ b/packages/store-ui/src/atoms/Badge/index.ts
@@ -0,0 +1,2 @@
+export { default } from './Badge'
+export type { BadgeProps } from './Badge'
diff --git a/packages/store-ui/src/atoms/Badge/stories/Badge.mdx b/packages/store-ui/src/atoms/Badge/stories/Badge.mdx
new file mode 100644
index 0000000000..af66dd72eb
--- /dev/null
+++ b/packages/store-ui/src/atoms/Badge/stories/Badge.mdx
@@ -0,0 +1,12 @@
+import { Story, Canvas, ArgsTable } from '@storybook/addon-docs'
+import Badge from '../Badge'
+
+# Preview
+
+
+
+# Props
+
+
diff --git a/packages/store-ui/src/atoms/Badge/stories/Badge.stories.tsx b/packages/store-ui/src/atoms/Badge/stories/Badge.stories.tsx
new file mode 100644
index 0000000000..1e993458fd
--- /dev/null
+++ b/packages/store-ui/src/atoms/Badge/stories/Badge.stories.tsx
@@ -0,0 +1,37 @@
+import type { Story } from '@storybook/react'
+import React from 'react'
+
+import type { ComponentArgTypes } from '../../../typings/utils'
+import Component from '../Badge'
+import mdx from './Badge.mdx'
+
+interface StoryControls {
+ badgeText: string
+}
+
+const BadgeTemplate: Story = ({ badgeText }) => (
+ {badgeText}
+)
+
+export const Badge = BadgeTemplate.bind({})
+
+const argTypes: ComponentArgTypes = {
+ badgeText: {
+ name: 'Badge text',
+ control: {
+ type: 'text',
+ },
+ defaultValue: '-25%',
+ },
+}
+
+export default {
+ title: 'Atoms/Badge',
+ component: Badge,
+ argTypes,
+ parameters: {
+ docs: {
+ page: mdx,
+ },
+ },
+}
diff --git a/packages/store-ui/src/deprecated/index.ts b/packages/store-ui/src/deprecated/index.ts
index d1bd94b674..967f35d4cd 100644
--- a/packages/store-ui/src/deprecated/index.ts
+++ b/packages/store-ui/src/deprecated/index.ts
@@ -25,7 +25,7 @@ export {
Progress,
Donut,
Avatar,
- Badge,
+ Badge as UIBadge,
Close,
Alert,
Divider,
@@ -61,7 +61,7 @@ export type {
ProgressProps,
DonutProps,
AvatarProps,
- BadgeProps,
+ BadgeProps as UIBadgeProps,
AlertProps,
DividerProps,
EmbedProps,
diff --git a/packages/store-ui/src/index.ts b/packages/store-ui/src/index.ts
index 8a32cd9e43..16e06ee712 100644
--- a/packages/store-ui/src/index.ts
+++ b/packages/store-ui/src/index.ts
@@ -29,6 +29,9 @@ export type { SelectProps } from './atoms/Select'
export { default as Radio } from './atoms/Radio'
export type { RadioProps } from './atoms/Radio'
+export { default as Badge } from './atoms/Badge'
+export type { BadgeProps } from './atoms/Badge'
+
// Molecules
export { default as Bullets } from './molecules/Bullets'
export type { BulletsProps } from './molecules/Bullets'
diff --git a/themes/theme-b2c-tailwind/src/atoms/badge.css b/themes/theme-b2c-tailwind/src/atoms/badge.css
new file mode 100644
index 0000000000..49852906e3
--- /dev/null
+++ b/themes/theme-b2c-tailwind/src/atoms/badge.css
@@ -0,0 +1,8 @@
+[data-store-badge] {
+ display: inline-block;
+ color: #ffffff;
+ background-color: #f71963;
+ padding: 0.4rem;
+ border-radius: 0.2rem;
+ font-size: 0.9rem;
+}
diff --git a/themes/theme-b2c-tailwind/src/atoms/index.css b/themes/theme-b2c-tailwind/src/atoms/index.css
index 62ca44ecf9..72a06c5174 100644
--- a/themes/theme-b2c-tailwind/src/atoms/index.css
+++ b/themes/theme-b2c-tailwind/src/atoms/index.css
@@ -5,3 +5,4 @@
@import "./price.css";
@import "./textarea.css";
@import "./overlay.css";
+@import "./badge.css";