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 }) => ( +
+

{stateName}

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