diff --git a/.storybook/main.cjs b/.storybook/main.cjs
index 2ed96f0..bb3a24a 100644
--- a/.storybook/main.cjs
+++ b/.storybook/main.cjs
@@ -13,6 +13,7 @@ module.exports = {
core: {
builder: "@storybook/builder-vite",
},
+ staticDirs: ["../src/assets"],
features: {
storyStoreV7: true,
},
diff --git a/src/assets/close.svg b/src/assets/close.svg
new file mode 100644
index 0000000..92e865e
--- /dev/null
+++ b/src/assets/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/button/Button.tsx b/src/components/button/Button.tsx
index eda4709..d6ba3a2 100644
--- a/src/components/button/Button.tsx
+++ b/src/components/button/Button.tsx
@@ -1,6 +1,5 @@
import React, { useRef } from "react";
import styles from "./Button.module.scss";
-import { ReactComponent } from "../../assets/svgr-custom";
// @ts-ignore
import { ReactComponent as LoadingCircles } from "../../assets/loading-circles.svg";
import { combineConditionalClasses } from "../../helpers/combineClasses";
diff --git a/src/components/checkbox/Checkbox.module.scss b/src/components/checkbox/Checkbox.module.scss
new file mode 100644
index 0000000..c11dfa5
--- /dev/null
+++ b/src/components/checkbox/Checkbox.module.scss
@@ -0,0 +1,46 @@
+@import "../../styles/colors.scss";
+
+.containerLabel {
+ display: grid;
+ grid-template-columns: 1em auto;
+ gap: 0.5em;
+}
+
+.checkbox {
+ appearance: none;
+ margin: 0;
+ width: 1.2em;
+ height: 1.2em;
+
+ border: 0.15em solid $unimportant;
+ border-radius: 0.25em;
+
+ display: grid;
+ place-content: center;
+
+ transition: border 100ms linear;
+}
+
+.checkbox::before {
+ content: "";
+ width: 1em;
+ height: 1em;
+ background: url("/close.svg");
+ background-size: contain;
+ background-position: center;
+
+ transform: scale(0);
+ transition: transform 100ms ease-in-out, filter 100ms linear;
+}
+
+.checkbox:checked::before {
+ transform: scale(1);
+}
+
+.checkbox:disabled {
+ border-color: $disabled;
+}
+
+.checkbox:disabled:before {
+ filter: grayscale(1);
+}
diff --git a/src/components/checkbox/Checkbox.tsx b/src/components/checkbox/Checkbox.tsx
new file mode 100644
index 0000000..24c1c8c
--- /dev/null
+++ b/src/components/checkbox/Checkbox.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import styles from "./Checkbox.module.scss";
+// @ts-ignore
+import { ReactComponent as Close } from "../../assets/close.svg";
+
+interface CheckboxProps {
+ disabled?: boolean;
+ label?: string;
+ checked?: boolean;
+ onClick?: React.HTMLAttributes["onChange"];
+}
+
+const Checkbox: React.FC = ({ checked, disabled, label, onClick }) => {
+ return (
+
+ );
+};
+
+export default Checkbox;
diff --git a/src/components/checkbox/index.ts b/src/components/checkbox/index.ts
new file mode 100644
index 0000000..951c169
--- /dev/null
+++ b/src/components/checkbox/index.ts
@@ -0,0 +1,3 @@
+import Checkbox from "./Checkbox"
+
+export default Checkbox;
diff --git a/src/stories/Checkbox.stories.tsx b/src/stories/Checkbox.stories.tsx
new file mode 100644
index 0000000..5b42201
--- /dev/null
+++ b/src/stories/Checkbox.stories.tsx
@@ -0,0 +1,18 @@
+import React from "react";
+
+import { ComponentStory, ComponentMeta } from "@storybook/react";
+
+import Checkbox from "../components/checkbox";
+
+export default { title: "Checkbox", component: Checkbox, argTypes: {onClick: {action: "click"}} } as ComponentMeta;
+
+const Template: ComponentStory = (args) => ;
+
+export const defaultButton = Template.bind({});
+
+defaultButton.args = {
+ checked: false,
+ disabled: false,
+ label: "Test",
+};
+