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 ( +
+

Addon Store

+ + + + Calculator +
+ ) +} + +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