diff --git a/compass/components/Drawer/ResourceInputDrawer.tsx b/compass/components/Drawer/ResourceInputDrawer.tsx
new file mode 100644
index 0000000..a80adbb
--- /dev/null
+++ b/compass/components/Drawer/ResourceInputDrawer.tsx
@@ -0,0 +1,82 @@
+import React, { useState } from "react";
+
+const ResourceInputDrawer = ({ isOpen, setIsOpen, setData }) => {
+ const [resourceContent, setResourceContent] = useState({
+ name: "",
+ link: "",
+ program: "",
+ summary: "",
+ });
+
+ const handleInputChange = (e) => {
+ const { name, value } = e.target;
+ setResourceContent((prev) => ({ ...prev, [name]: value }));
+ };
+
+ const handleSave = () => {
+ setData((prevData) => [...prevData, resourceContent]);
+ setIsOpen(false); // Close drawer after saving
+ };
+
+ const toggleDrawerClass = isOpen ? "translate-x-0 shadow-xl" : "translate-x-full";
+
+ return (
+
+
+
Add New Resource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ResourceInputDrawer;
diff --git a/compass/components/Table/NewDrawerButton.tsx b/compass/components/Table/NewDrawerButton.tsx
new file mode 100644
index 0000000..08f80f2
--- /dev/null
+++ b/compass/components/Table/NewDrawerButton.tsx
@@ -0,0 +1,43 @@
+import Drawer from "@/components/Drawer/Drawer";
+import { PlusIcon } from "@heroicons/react/24/solid";
+import { Dispatch, SetStateAction, useState } from "react";
+
+type NewDrawerButtonProps = {
+ title?: string;
+ setData: Dispatch>;
+};
+
+export function NewDrawerButton({ title = "New", setData }: NewDrawerButtonProps) {
+ const [isDrawerOpen, setIsDrawerOpen] = useState(false);
+
+ const handleOpenDrawer = () => {
+ setIsDrawerOpen(true);
+ };
+
+ const handleCloseDrawer = () => {
+ setIsDrawerOpen(false);
+ };
+
+ return (
+ <>
+
+ {isDrawerOpen && (
+
+ Drawer content goes here...
+
+ )}
+ >
+ );
+}
+
diff --git a/compass/components/Table/Table.tsx b/compass/components/Table/Table.tsx
index b0a3bd1..cb41395 100644
--- a/compass/components/Table/Table.tsx
+++ b/compass/components/Table/Table.tsx
@@ -19,6 +19,8 @@ import { PlusIcon } from "@heroicons/react/24/solid";
import { rankItem } from "@tanstack/match-sorter-utils";
import { RowOptionMenu } from "./RowOptionMenu";
import DataPoint from "@/utils/models/DataPoint";
+import { NewDrawerButton } from "./NewDrawerButton";
+import ResourceInputDrawer from "../Drawer/ResourceInputDrawer";
type TableProps = {
data: T[];
@@ -56,6 +58,9 @@ export default function Table({
}: TableProps) {
const columnHelper = createColumnHelper();
+ /** Handle input drawer visibility */
+ const [isDrawerOpen, setIsDrawerOpen] = useState(false);
+
/** Sorting function based on visibility */
const visibilitySort = (a: T, b: T) =>
a.visible === b.visible ? 0 : a.visible ? -1 : 1;
@@ -148,6 +153,7 @@ export default function Table({
return rowData;
};
+
return (
@@ -210,16 +216,25 @@ export default function Table
({
-
-
- New
-
+
|
+ {/* Slide-in ResourceInputDrawer */}
+
+
+
);
}