diff --git a/src/components/Dimmer/Dimmer.props.ts b/src/components/Dimmer/Dimmer.props.ts
new file mode 100644
index 00000000..c95fc69e
--- /dev/null
+++ b/src/components/Dimmer/Dimmer.props.ts
@@ -0,0 +1,5 @@
+import { DimmerConfig } from './Dimmer.styles';
+
+export type DimmerProps = {
+ custom?: DimmerConfig;
+};
diff --git a/src/components/Dimmer/Dimmer.stories.tsx b/src/components/Dimmer/Dimmer.stories.tsx
new file mode 100644
index 00000000..78179c19
--- /dev/null
+++ b/src/components/Dimmer/Dimmer.stories.tsx
@@ -0,0 +1,98 @@
+import type { Meta, StoryObj } from '@storybook/react';
+
+import { Dimmer } from './Dimmer';
+import { Badge } from '../Badge';
+import { Card } from '../Card';
+
+import { DimmerDocs } from '@/docs-components/DimmerDocs';
+import { TetDocs } from '@/docs-components/TetDocs';
+import { tet } from '@/tetrisly';
+
+const meta = {
+ title: 'Dimmer',
+ component: Dimmer,
+ tags: ['autodocs'],
+ args: {},
+ parameters: {
+ backgrounds: {},
+ docs: {
+ description: {
+ component:
+ 'An overlay that darkens the background content to focus the users attention on another specific element or interaction, such as a Modal or Side Panel.',
+ },
+ page: () => (
+
+
+
+ ),
+ },
+ },
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {},
+};
+
+export const WithCardComponent: Story = {
+ render: () => (
+ <>
+
+
+
+
+
+
+
+ Task:
+
+
+ Creating React components
+
+
+
+
+
+ Created
+
+
+ Mon, 14 Feb 2023
+
+
+
+
+ Last modified
+
+
+ Today, 5:23 am
+
+
+
+
+
+
+ >
+ ),
+};
diff --git a/src/components/Dimmer/Dimmer.styles.ts b/src/components/Dimmer/Dimmer.styles.ts
new file mode 100644
index 00000000..ff470cef
--- /dev/null
+++ b/src/components/Dimmer/Dimmer.styles.ts
@@ -0,0 +1,17 @@
+import type { BaseProps } from '@/types/BaseProps';
+
+export type DimmerConfig = BaseProps;
+
+export const defaultConfig = {
+ w: '100%',
+ h: '100%',
+ backgroundColor: '$color-interaction-background-dimmer',
+ top: 0,
+ left: 0,
+ position: 'absolute',
+ zIndex: 3,
+} satisfies DimmerConfig;
+
+export const dimmerStyles = {
+ defaultConfig,
+};
diff --git a/src/components/Dimmer/Dimmer.test.tsx b/src/components/Dimmer/Dimmer.test.tsx
new file mode 100644
index 00000000..63b2e446
--- /dev/null
+++ b/src/components/Dimmer/Dimmer.test.tsx
@@ -0,0 +1,25 @@
+import { Dimmer } from './Dimmer';
+import { render } from '../../tests/render';
+
+import { customPropTester } from '@/tests/customPropTester';
+
+const getDimmer = (jsx: JSX.Element) => {
+ const { getByTestId } = render(jsx);
+ return getByTestId('dimmer');
+};
+
+describe('Dimmer', () => {
+ it('should render the dimmer', () => {
+ const dimmer = getDimmer();
+ expect(dimmer).toBeInTheDocument();
+ });
+
+ it('should render correct color', () => {
+ const dimmer = getDimmer();
+ expect(dimmer).toHaveStyle('background-color: rgba(25, 39, 58, 0.741)');
+ });
+
+ customPropTester(, {
+ containerId: 'dimmer',
+ });
+});
diff --git a/src/components/Dimmer/Dimmer.tsx b/src/components/Dimmer/Dimmer.tsx
new file mode 100644
index 00000000..71a389f3
--- /dev/null
+++ b/src/components/Dimmer/Dimmer.tsx
@@ -0,0 +1,16 @@
+import { type FC, useMemo } from 'react';
+
+import type { DimmerProps } from './Dimmer.props';
+import { stylesBuilder } from './stylesBuilder';
+
+import { tet } from '@/tetrisly';
+import type { MarginProps } from '@/types';
+
+export const Dimmer: FC = ({
+ custom,
+ ...restProps
+}) => {
+ const styles = useMemo(() => stylesBuilder({ custom }), [custom]);
+
+ return ;
+};
diff --git a/src/components/Dimmer/index.ts b/src/components/Dimmer/index.ts
new file mode 100644
index 00000000..1e412629
--- /dev/null
+++ b/src/components/Dimmer/index.ts
@@ -0,0 +1,3 @@
+export { Dimmer } from './Dimmer';
+export type { DimmerProps } from './Dimmer.props';
+export { dimmerStyles } from './Dimmer.styles';
diff --git a/src/components/Dimmer/stylesBuilder.ts b/src/components/Dimmer/stylesBuilder.ts
new file mode 100644
index 00000000..6dc2bb9d
--- /dev/null
+++ b/src/components/Dimmer/stylesBuilder.ts
@@ -0,0 +1,27 @@
+import { DimmerProps } from './Dimmer.props';
+import { defaultConfig } from './Dimmer.styles';
+
+import { mergeConfigWithCustom } from '@/services';
+import { BaseProps } from '@/types/BaseProps';
+
+type StylesBuilderParams = {
+ custom: DimmerProps['custom'];
+};
+
+type DimmerStylesBuilder = {
+ container: BaseProps;
+};
+
+export const stylesBuilder = ({
+ custom,
+}: StylesBuilderParams): DimmerStylesBuilder => {
+ const config = mergeConfigWithCustom({ defaultConfig, custom });
+
+ const { ...restStyles } = config;
+
+ return {
+ container: {
+ ...restStyles,
+ },
+ };
+};
diff --git a/src/docs-components/DimmerDocs.tsx b/src/docs-components/DimmerDocs.tsx
new file mode 100644
index 00000000..1801dee2
--- /dev/null
+++ b/src/docs-components/DimmerDocs.tsx
@@ -0,0 +1,14 @@
+import { Dimmer } from '@/components/Dimmer/Dimmer';
+import { tet } from '@/tetrisly';
+
+export const DimmerDocs = () => (
+
+
+
+
+
+
+
+
+
+);
diff --git a/src/index.ts b/src/index.ts
index f7258878..e5f1ea6a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -8,6 +8,7 @@ export * from './components/Checkbox';
export * from './components/CheckboxGroup';
export * from './components/CornerDialog';
export * from './components/Counter';
+export * from './components/Dimmer';
export * from './components/Divider';
export * from './components/FileItem';
export * from './components/HelperText';