diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index c8aa464b..7d587c32 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -15,6 +15,8 @@ import LinksDefaultPage from "./scenes/links/LinksDefaultPage";
import ToursDefaultPage from "./scenes/tours/ToursDefaultPage";
import PopupDefaultPage from "./scenes/popup/PopupDefaultPage";
import HintDefaultPage from "./scenes/hints/HintDefaultPage";
+import CreateHintPage from "./scenes/hints/CreateHintPage";
+import HintPage from "./scenes/hints/HintPage";
import CreatePopupPage from "./scenes/popup/CreatePopupPage";
function App() {
@@ -23,10 +25,13 @@ function App() {
return (
<>
- : } />
+ : }
+ />
{/* } /> */}
{/* : } /> */}
- } />
+ } />
} />
} />
} />
@@ -39,8 +44,10 @@ function App() {
} />
} />
} />
- } />
-
+ } />
+ } />
+ } />
+
>
);
}
diff --git a/frontend/src/components/HintPageComponents/HintLeftAppearance/HintLeftAppearance.css b/frontend/src/components/HintPageComponents/HintLeftAppearance/HintLeftAppearance.css
new file mode 100644
index 00000000..c08d921b
--- /dev/null
+++ b/frontend/src/components/HintPageComponents/HintLeftAppearance/HintLeftAppearance.css
@@ -0,0 +1,18 @@
+.hint-appearance-container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1;
+}
+
+.hint-state-name {
+ margin-top: 1.5rem;
+ margin-bottom: 0;
+ font-weight: 400;
+ font-size: 13px;
+}
+
+.hint-appearance-color {
+ display: flex;
+ align-items: center;
+}
diff --git a/frontend/src/components/HintPageComponents/HintLeftAppearance/HintLeftAppearance.jsx b/frontend/src/components/HintPageComponents/HintLeftAppearance/HintLeftAppearance.jsx
new file mode 100644
index 00000000..af23f822
--- /dev/null
+++ b/frontend/src/components/HintPageComponents/HintLeftAppearance/HintLeftAppearance.jsx
@@ -0,0 +1,20 @@
+import React from "react";
+import ColorTextField from "../../ColorTextField/ColorTextField";
+import "./HintLeftAppearance.css";
+
+const HintLeftAppearance = ({ data = [] }) => {
+ return (
+
+ {data.map(({ stateName, state, setState }) => (
+
+ ))}
+
+ );
+};
+
+export default HintLeftAppearance;
diff --git a/frontend/src/components/HintPageComponents/HintLeftContent/HintLeftContent.css b/frontend/src/components/HintPageComponents/HintLeftContent/HintLeftContent.css
new file mode 100644
index 00000000..4d85b8d9
--- /dev/null
+++ b/frontend/src/components/HintPageComponents/HintLeftContent/HintLeftContent.css
@@ -0,0 +1,14 @@
+.left-content-container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1;
+ gap: 5;
+ color: var(--main-text-color);
+}
+
+.hint-label {
+ font-weight: 400;
+ font-size: 13px;
+ margin-top: 1.5rem;
+}
\ No newline at end of file
diff --git a/frontend/src/components/HintPageComponents/HintLeftContent/HintLeftContent.jsx b/frontend/src/components/HintPageComponents/HintLeftContent/HintLeftContent.jsx
new file mode 100644
index 00000000..9744ca32
--- /dev/null
+++ b/frontend/src/components/HintPageComponents/HintLeftContent/HintLeftContent.jsx
@@ -0,0 +1,49 @@
+import React from "react";
+import DropdownList from "../../DropdownList/DropdownList";
+import CustomTextField from "../../TextFieldComponents/CustomTextField/CustomTextField";
+import "./HintLeftContent.css";
+
+const HintLeftContent = ({ setLeftContentFormData, formData }) => {
+
+ const handleChange = (name) => (e) => {
+ setLeftContentFormData({ ...formData, [name]: e.target.value });
+ };
+
+ return (
+
+
Action
+
+
+ Action button url (can be relative)
+
+
+
+ Action button text
+
+
+
+ Target Element
+
+
+ Tooltip Placement
+
+
+ );
+};
+
+export default HintLeftContent;
diff --git a/frontend/src/components/templates/GuideTemplate/GuideTemplate.jsx b/frontend/src/components/templates/GuideTemplate/GuideTemplate.jsx
index 17ec085c..44e97e19 100644
--- a/frontend/src/components/templates/GuideTemplate/GuideTemplate.jsx
+++ b/frontend/src/components/templates/GuideTemplate/GuideTemplate.jsx
@@ -1,7 +1,7 @@
import { React } from 'react';
import PropTypes from 'prop-types';
import CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';
-import styles from './GuideTemplate.module.scss';
+//import styles from './GuideTemplate.module.scss';
import classNames from 'classnames';
import Button from '../../Button/Button';
import { useNavigate } from 'react-router-dom';
diff --git a/frontend/src/scenes/hints/CreateHintPage.jsx b/frontend/src/scenes/hints/CreateHintPage.jsx
new file mode 100644
index 00000000..d7e32619
--- /dev/null
+++ b/frontend/src/scenes/hints/CreateHintPage.jsx
@@ -0,0 +1,86 @@
+import React, { useState } from "react";
+import HomePageTemplate from "../../templates/HomePageTemplate/HomePageTemplate";
+import GuideTemplate from "../../templates/GuideTemplate/GuideTemplate";
+import RichTextEditor from "../../components/RichTextEditor/RichTextEditor";
+import HintLeftContent from "../../components/HintPageComponents/HintLeftContent/HintLeftContent";
+import HintLeftAppearance from "../../components/HintPageComponents/HintLeftAppearance/HintLeftAppearance";
+
+const HintPage = () => {
+ const [activeButton, setActiveButton] = useState(0);
+ const [leftContentFormData, setLeftContentFormData] = useState({
+ actionButtonUrl: "https//",
+ actionButtonText: "",
+ targetElement: ".element",
+ });
+
+ const handleButtonClick = (index) => {
+ setActiveButton(index);
+ };
+
+ const [headerBackgroundColor, setHeaderBackgroundColor] = useState("#F8F9F8");
+ const [headerColor, setHeaderColor] = useState("#101828");
+ const [textColor, setTextColor] = useState("#344054");
+ const [buttonBackgroundColor, setButtonBackgroundColor] = useState("#7F56D9");
+ const [buttonTextColor, setButtonTextColor] = useState("#FFFFFF");
+
+ const stateList = [
+ {
+ stateName: "Header Background Color",
+ state: headerBackgroundColor,
+ setState: setHeaderBackgroundColor,
+ },
+ {
+ stateName: "Header Color",
+ state: headerColor,
+ setState: setHeaderColor,
+ },
+ { stateName: "Text Color", state: textColor, setState: setTextColor },
+ {
+ stateName: "Button Background Color",
+ state: buttonBackgroundColor,
+ setState: setButtonBackgroundColor,
+ },
+ {
+ stateName: "Button Text Color",
+ state: buttonTextColor,
+ setState: setButtonTextColor,
+ },
+ ];
+
+ return (
+
+
+ (
+
+ )}
+ leftContent={() => (
+
+ )}
+ leftAppearance={() => }
+ />
+
+
+ );
+};
+
+export default HintPage;
diff --git a/frontend/src/scenes/hints/HintDefaultPage.jsx b/frontend/src/scenes/hints/HintDefaultPage.jsx
index 2a2ecee5..e5e69684 100644
--- a/frontend/src/scenes/hints/HintDefaultPage.jsx
+++ b/frontend/src/scenes/hints/HintDefaultPage.jsx
@@ -2,25 +2,28 @@ import CreateActivityButton from "../../components/Button/CreateActivityButton/C
import HomePageTemplate from "../../templates/HomePageTemplate/HomePageTemplate"
import { ACTIVITY_TYPES } from "../../data/CreateActivityButtonData";
import ParagraphCSS from "../../components/ParagraphCSS/ParagraphCSS";
+import { useNavigate } from "react-router";
const HintDefaultPage = () => {
- const style = {
- "display": "flex",
- "flex-direction": "column",
- "width": "100%",
- "justify-content": "center",
- "align-items": "center",
- }
- return (
-
-
-
-
- )
-}
-
-export default HintDefaultPage
+ const navigate = useNavigate();
+ const style = {
+ display: "flex",
+ "flex-direction": "column",
+ width: "100%",
+ "justify-content": "center",
+ "align-items": "center",
+ };
+ return (
+
+
+
+
navigate("/hint/create")}
+ />
+
+
+ );
+};
+export default HintDefaultPage;
diff --git a/frontend/src/scenes/hints/HintPage.css b/frontend/src/scenes/hints/HintPage.css
new file mode 100644
index 00000000..4e6cb411
--- /dev/null
+++ b/frontend/src/scenes/hints/HintPage.css
@@ -0,0 +1,34 @@
+.hint-page-container {
+ display: grid;
+ grid-template-columns: 3fr 1fr;
+ grid-gap: 20px;
+ width: 100%;
+ padding: 2% 3%;
+}
+
+.hint-page-title {
+ margin: 0;
+ height: 34px;
+}
+
+.hint-info-title,
+.hint-page-title {
+ font-weight: 600;
+ font-size: 16px;
+ color: var(--main-purple);
+}
+
+.hint-right-content {
+ width: 292px;
+ height: 510px;
+ display: flex;
+ flex-direction: column;
+ align-items: end;
+}
+
+.hint-info {
+ margin-top: 16px;
+ padding: 16px;
+ border-radius: 8px;
+ border: 1px solid var(--grey-border);
+}
diff --git a/frontend/src/scenes/hints/HintPage.jsx b/frontend/src/scenes/hints/HintPage.jsx
new file mode 100644
index 00000000..8c1fc887
--- /dev/null
+++ b/frontend/src/scenes/hints/HintPage.jsx
@@ -0,0 +1,69 @@
+import React from "react";
+import Button from "../../components/Button/Button";
+import List from "../../components/List/List";
+import HomePageTemplate from "../../templates/HomePageTemplate/HomePageTemplate";
+import HintDefaultPage from "./HintDefaultPage";
+import "./HintPage.css";
+import { useNavigate } from "react-router-dom";
+
+const hintsData = [
+ {
+ idItem: 184293,
+ title: "Main dashboard - feature hint",
+ text: "This pops up the first time a user logs in to the dashboard.",
+ },
+ {
+ idItem: 194294,
+ title: "Main dashboard - password hint",
+ text: "This pops up the first time a user logs in to the dashboard.",
+ },
+];
+
+const HintPage = () => {
+ const navigate = useNavigate();
+ if (hintsData.length === 0) {
+ return ;
+ } else {
+ return (
+
+
+
+
All Hints
+ { }} />
+
+
+
+
+
+ );
+ }
+};
+
+export default HintPage;