diff --git a/src/AddonStore.tsx b/src/AddonStore.tsx
new file mode 100644
index 0000000..6457fc5
--- /dev/null
+++ b/src/AddonStore.tsx
@@ -0,0 +1,29 @@
+import AddonList from "./components/AddonStore/AddonList"
+import { AddonCardProps } from "./components/AddonStore/AddonCard"
+import plugins from "./Plugins"
+
+function AddonStore() {
+ const installHandler = (e: any) => {
+ console.log(e.target)
+ }
+
+ console.log(plugins)
+
+ const cards: AddonCardProps[] = [
+ ...plugins,
+ { name: 'Test Addon', description: "Lorem ipsum dolor sit amet", onInstall: installHandler, installed: false },
+ // { name: 'Test Addon', description: "Lorem ipsum dolor sit amet", onInstall: installHandler, installed: true },
+ ];
+
+ return (
+
+ )
+}
+
+export default AddonStore
diff --git a/src/Calculator.tsx b/src/Calculator.tsx
index adb8209..4aa26f2 100644
--- a/src/Calculator.tsx
+++ b/src/Calculator.tsx
@@ -166,6 +166,8 @@ function Calculator() {
+
+ Addon Store
)
}
diff --git a/src/Plugins.ts b/src/Plugins.ts
new file mode 100644
index 0000000..de19144
--- /dev/null
+++ b/src/Plugins.ts
@@ -0,0 +1,6 @@
+import TestPlugin from './Plugins/TestPlugin/plugin.json';
+import ExamplePlugin from './Plugins/ExamplePlugin/plugin.json';
+
+let plugins = [TestPlugin, ExamplePlugin];
+
+export default plugins;
\ No newline at end of file
diff --git a/src/Plugins/ExamplePlugin/plugin.json b/src/Plugins/ExamplePlugin/plugin.json
new file mode 100644
index 0000000..6608615
--- /dev/null
+++ b/src/Plugins/ExamplePlugin/plugin.json
@@ -0,0 +1,5 @@
+{
+ "name": "ExamplePlugin",
+ "description": "Amet consectetur adipisicing elit",
+ "path": "/ExamplePlugin"
+}
\ No newline at end of file
diff --git a/src/Plugins/ExamplePlugin/src/index.tsx b/src/Plugins/ExamplePlugin/src/index.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/src/Plugins/TestPlugin/plugin.json b/src/Plugins/TestPlugin/plugin.json
new file mode 100644
index 0000000..5d10a84
--- /dev/null
+++ b/src/Plugins/TestPlugin/plugin.json
@@ -0,0 +1,5 @@
+{
+ "name": "TestPlugin",
+ "description": "Lorem ipsum dolor sit",
+ "path": "/TestPlugin"
+}
\ No newline at end of file
diff --git a/src/Plugins/TestPlugin/src/index.tsx b/src/Plugins/TestPlugin/src/index.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/src/components/AddonStore/AddonCard.tsx b/src/components/AddonStore/AddonCard.tsx
new file mode 100644
index 0000000..d0b04c5
--- /dev/null
+++ b/src/components/AddonStore/AddonCard.tsx
@@ -0,0 +1,18 @@
+export interface AddonCardProps {
+ name: string;
+ description?: string;
+ installed: boolean;
+ onInstall: (e: any) => void;
+}
+
+export default function AddonCard({ name, description, installed = false, onInstall }: AddonCardProps) {
+ return (
+
+
{name}
+ {description &&
{description}
}
+ {!installed &&
}
+ {installed &&
}
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/components/AddonStore/AddonList.tsx b/src/components/AddonStore/AddonList.tsx
new file mode 100644
index 0000000..ceb7de0
--- /dev/null
+++ b/src/components/AddonStore/AddonList.tsx
@@ -0,0 +1,16 @@
+import AddonCard, { AddonCardProps } from "./AddonCard";
+
+interface AddonListProps {
+ items: AddonCardProps[];
+}
+
+export default function AddonList({items, ...rest}: AddonListProps) {
+ return (
+
+ {items.map((item) => {
+ return
+ })}
+
+
+ )
+}
\ No newline at end of file