diff --git a/app/(admin)/admin/static-page/page.tsx b/app/(admin)/admin/static-page/page.tsx
new file mode 100644
index 0000000..cd7c356
--- /dev/null
+++ b/app/(admin)/admin/static-page/page.tsx
@@ -0,0 +1,10 @@
+import StaticPageBuilder from "@/components/main/static-page/static-page-main";
+import { Card } from "@nextui-org/react";
+
+export default function StaticPageGenerator() {
+ return (
+
+
+
+ );
+}
diff --git a/components/layout/sidebar/sidebar.tsx b/components/layout/sidebar/sidebar.tsx
index bac6000..5113728 100644
--- a/components/layout/sidebar/sidebar.tsx
+++ b/components/layout/sidebar/sidebar.tsx
@@ -107,6 +107,20 @@ const sideBarDummyData = [
statusName: "Active",
childModule: null,
},
+ {
+ id: 11,
+ name: "Static Page",
+ moduleId: 652,
+ moduleName: "Dashboard",
+ modulePathUrl: "/admin/static-page",
+ parentId: -1,
+ icon: ,
+ position: 1,
+ statusId: 1,
+ childMenu: [],
+ statusName: "Active",
+ childModule: null,
+ },
// {
// id: 4,
// name: "E-Magazine",
diff --git a/components/main/static-page/static-page-main.tsx b/components/main/static-page/static-page-main.tsx
new file mode 100644
index 0000000..a80311b
--- /dev/null
+++ b/components/main/static-page/static-page-main.tsx
@@ -0,0 +1,47 @@
+"use client";
+import { Textarea } from "@nextui-org/input";
+import { Card } from "@nextui-org/react";
+import { useCallback, useState } from "react";
+import DOMPurify from "dompurify";
+import Script from "next/script";
+
+export default function StaticPageBuilder() {
+ const [content, setContent] = useState("");
+
+ const generatedPage = useCallback(() => {
+ const sanitizedContent = DOMPurify.sanitize(content);
+ return (
+
+
+
+ );
+ }, [content]);
+
+ return (
+
+
+ Editor
+
+
+
+ Preview
+ {generatedPage()}
+
+
+ );
+}
diff --git a/package-lock.json b/package-lock.json
index 29bb911..2aa213e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,6 +33,7 @@
"axios": "^1.6.8",
"clsx": "^2.0.0",
"dayjs": "^1.11.13",
+ "dompurify": "^3.2.0",
"eslint": "8.48.0",
"eslint-config-next": "14.0.2",
"framer-motion": "^10.18.0",
@@ -3809,6 +3810,11 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.0.tgz",
+ "integrity": "sha512-AMdOzK44oFWqHEi0wpOqix/fUNY707OmoeFDnbi3Q5I8uOpy21ufUA5cDJPr0bosxrflOVD/H2DMSvuGKJGfmQ=="
+ },
"node_modules/domutils": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
diff --git a/package.json b/package.json
index 0e521e9..e554516 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"axios": "^1.6.8",
"clsx": "^2.0.0",
"dayjs": "^1.11.13",
+ "dompurify": "^3.2.0",
"eslint": "8.48.0",
"eslint-config-next": "14.0.2",
"framer-motion": "^10.18.0",