diff --git a/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx
new file mode 100644
index 00000000..6b32bb73
--- /dev/null
+++ b/packages/frontend/src/components/shared/CustomIcon/CustomIcon.tsx
@@ -0,0 +1,30 @@
+import React, { ComponentPropsWithoutRef } from 'react';
+
+export interface CustomIconProps extends ComponentPropsWithoutRef<'svg'> {
+ size?: number | string; // width and height will both be set as the same value
+ name?: string;
+}
+
+export const CustomIcon = ({
+ children,
+ width = 24,
+ height = 24,
+ size,
+ viewBox = '0 0 24 24',
+ name,
+ ...rest
+}: CustomIconProps) => {
+ return (
+
+ );
+};
diff --git a/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx b/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx
new file mode 100644
index 00000000..da4b1ee0
--- /dev/null
+++ b/packages/frontend/src/components/shared/CustomIcon/PlusIcon.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { CustomIcon, CustomIconProps } from './CustomIcon';
+
+export const PlusIcon = (props: CustomIconProps) => {
+ return (
+
+
+
+ );
+};
diff --git a/packages/frontend/src/components/shared/CustomIcon/README.md b/packages/frontend/src/components/shared/CustomIcon/README.md
new file mode 100644
index 00000000..d7e8b3d1
--- /dev/null
+++ b/packages/frontend/src/components/shared/CustomIcon/README.md
@@ -0,0 +1,24 @@
+# 1. What icons are compatible with this component?
+
+- Viewbox "0 0 24 24": From where you're exporting from, please make sure the icon is using viewBox="0 0 24 24" before downloading/exporting. Not doing so will result in incorrect icon scaling
+
+# 2. How to add a new icon?
+
+**2.1 Sanitising the icon**
+
+1. Duplicate a current icon e.g. CrossIcon and rename it accordingly.
+2. Rename the function inside the new file you duplicated too
+3. Replace the markup with your SVG markup (make sure it complies with the above section's rule)
+4. Depending on the svg you pasted...
+ A. If the `