diff --git a/src/components/Button.tsx b/src/components/Button.tsx new file mode 100644 index 0000000..386c343 --- /dev/null +++ b/src/components/Button.tsx @@ -0,0 +1,33 @@ +interface ButtonProps { + children: React.ReactNode; + onClick: React.MouseEventHandler; + title?: string; + + className?: string; +} + +export default function Button ({ + children, + onClick, + title, + + className +}: ButtonProps) { + return ( + + ); +} \ No newline at end of file diff --git a/src/components/ProjectEditor/CardEditor.tsx b/src/components/ProjectEditor/CardEditor.tsx index 1eb244e..e3cb65b 100644 --- a/src/components/ProjectEditor/CardEditor.tsx +++ b/src/components/ProjectEditor/CardEditor.tsx @@ -1,10 +1,11 @@ -import type { ProjectData, ProjectDataSample } from "@/types/Project"; +import type { ProjectData } from "@/types/Project"; import type { ChangeEvent } from "react"; // Stores import { useUnsavedProjectStore } from "@/stores/unsaved_project"; // Components +import Button from "@/components/Button"; import Select from "@/components/Select"; import Input from "@/components/Input"; import { Fragment } from "react"; @@ -84,21 +85,14 @@ export default function CardEditor ({ )} - + {children} @@ -110,49 +104,34 @@ export default function CardEditor ({ ? ( {target.id !== 0 && ( - + )} - + {launchpad && target.id !== ((type === "launchpad" ? data.launchpads : launchpad.pages).length - 1) && ( - + )} ) diff --git a/src/components/ProjectEditor/LaunchpadPageEditor.tsx b/src/components/ProjectEditor/LaunchpadPageEditor.tsx index 5e6eb7c..3f3a3e0 100644 --- a/src/components/ProjectEditor/LaunchpadPageEditor.tsx +++ b/src/components/ProjectEditor/LaunchpadPageEditor.tsx @@ -90,7 +90,13 @@ export default function LaunchpadPageEditor ({ downItem={downLaunchpadPage} > -
+
diff --git a/src/components/ProjectEditor/index.tsx b/src/components/ProjectEditor/index.tsx index 3adc4eb..79b70e7 100644 --- a/src/components/ProjectEditor/index.tsx +++ b/src/components/ProjectEditor/index.tsx @@ -1,7 +1,3 @@ -import type { - ProjectDataSample -} from "@/types/Project"; - import { ChangeEvent, useState @@ -14,6 +10,7 @@ import { useUnsavedProjectStore } from "@/stores/unsaved_project"; // ProjectEditor's components import LaunchpadEditor from "./LaunchpadEditor"; import LaunchpadPageEditor from "./LaunchpadPageEditor"; +import LaunchpadSampleEditor from "./LaunchpadSampleEditor"; export default function ProjectEditor () { const log = logger("/:slug~ProjectEditor"); @@ -112,7 +109,7 @@ export default function ProjectEditor () { // Add a new page to the current launchpad. const index = data_copy.launchpads[currentLaunchpadSelected].pages.length; const name = `Page ${index}`; - data_copy.launchpads[currentLaunchpadSelected].pages.push({ name, samples: [] }); + data_copy.launchpads[currentLaunchpadSelected].pages.push({ name, samples: {} }); setData(data_copy); setCurrentPadSelected(undefined); @@ -166,12 +163,13 @@ export default function ProjectEditor () { /** Short-hand for `currentPadSelected` with data. */ const sample = (launchpad && page && typeof currentPadSelected !== "undefined") ? { ...page.samples[currentPadSelected], - id: currentPadSelected + id: currentPadSelected, + isAssigned: !! page.samples[currentPadSelected] } : null; return (
-
+
- {sample && ( - )}
); } -const PadEditor = ({ sample }: { sample: ProjectDataSample & { id: number } }) => { - return ( -
-

- Viewing sample from note {sample.id} -

-
- ); -}; \ No newline at end of file