dq-cus-lib 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-7SODGRB3.js +23 -0
- package/dist/chunk-7SODGRB3.js.map +1 -0
- package/dist/chunk-F4BCZYRK.js +11 -0
- package/dist/chunk-F4BCZYRK.js.map +1 -0
- package/dist/chunk-IRLSI36D.js +25 -0
- package/dist/chunk-IRLSI36D.js.map +1 -0
- package/dist/chunk-IYKARRP3.js +12 -0
- package/dist/chunk-IYKARRP3.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -1
- package/dist/pages/error.page.css +51 -0
- package/dist/pages/error.page.css.map +1 -0
- package/dist/pages/error.page.d.ts +3 -0
- package/dist/pages/error.page.js +16 -0
- package/dist/pages/error.page.js.map +1 -0
- package/dist/pages/landing.page.css +39 -0
- package/dist/pages/landing.page.css.map +1 -0
- package/dist/pages/landing.page.d.ts +9 -0
- package/dist/pages/landing.page.js +120 -0
- package/dist/pages/landing.page.js.map +1 -0
- package/dist/pages/layout.page.d.ts +9 -0
- package/dist/pages/layout.page.js +18 -0
- package/dist/pages/layout.page.js.map +1 -0
- package/dist/pages/logout-error.page.css +51 -0
- package/dist/pages/logout-error.page.css.map +1 -0
- package/dist/pages/logout-error.page.d.ts +8 -0
- package/dist/pages/logout-error.page.js +23 -0
- package/dist/pages/logout-error.page.js.map +1 -0
- package/dist/pages/signin.page.css +12 -0
- package/dist/pages/signin.page.css.map +1 -0
- package/dist/pages/signin.page.d.ts +8 -0
- package/dist/pages/signin.page.js +184 -0
- package/dist/pages/signin.page.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import Container from '@mui/material/Container';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/components/error.page/error.tsx
|
|
5
|
+
var Error = () => {
|
|
6
|
+
return /* @__PURE__ */ jsx(Container, { className: "error-wrapper", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
7
|
+
/* @__PURE__ */ jsxs("div", { className: "error-404", children: [
|
|
8
|
+
"4",
|
|
9
|
+
/* @__PURE__ */ jsx("span", { className: "error-emoji", role: "img", "aria-label": "0", children: "\u{1F635}" }),
|
|
10
|
+
"4"
|
|
11
|
+
] }),
|
|
12
|
+
/* @__PURE__ */ jsx("div", { className: "error-text", children: "OOPS! PAGE NOT BE FOUND" }),
|
|
13
|
+
/* @__PURE__ */ jsxs("p", { className: "error-desc mt-2", children: [
|
|
14
|
+
"Sorry, but the page you are looking for does not exist. We must have removed, renamed or never created it ",
|
|
15
|
+
/* @__PURE__ */ jsx("span", { "aria-label": "face", role: "img", children: "\u{1F92A}" })
|
|
16
|
+
] })
|
|
17
|
+
] }) });
|
|
18
|
+
};
|
|
19
|
+
var error_default = Error;
|
|
20
|
+
|
|
21
|
+
export { error_default };
|
|
22
|
+
//# sourceMappingURL=chunk-7SODGRB3.js.map
|
|
23
|
+
//# sourceMappingURL=chunk-7SODGRB3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/error.page/error.tsx"],"names":[],"mappings":";;;;AAGA,IAAM,QAAQ,MAAM;AAEhB,EAAA,uBACI,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,eAAA,EACjB,+BAAC,KAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EAAY,QAAA,EAAA;AAAA,MAAA,GAAA;AAAA,sBACtB,GAAA,CAAC,UAAK,SAAA,EAAU,aAAA,EAAc,MAAK,KAAA,EAAM,YAAA,EAAW,KAAI,QAAA,EAAA,WAAA,EAAE,CAAA;AAAA,MAAO;AAAA,KAAA,EACtE,CAAA;AAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa,QAAA,EAAA,yBAAA,EAE5B,CAAA;AAAA,oBACA,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iBAAA,EAAkB,QAAA,EAAA;AAAA,MAAA,4GAAA;AAAA,0BAA2G,MAAA,EAAA,EAAK,YAAA,EAAW,MAAA,EAAO,IAAA,EAAK,OAAM,QAAA,EAAA,WAAA,EAAE;AAAA,KAAA,EAAO;AAAA,GAAA,EACzL,CAAA,EACJ,CAAA;AAGR,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"chunk-7SODGRB3.js","sourcesContent":["import '../css/error.page.css';\nimport Container from '@mui/material/Container';\n\nconst Error = () => {\n\n return (\n <Container className='error-wrapper'>\n <div>\n <div className=\"error-404\"> \n 4<span className=\"error-emoji\" role=\"img\" aria-label=\"0\">😵</span>4\n </div>\n <div className=\"error-text\">\n OOPS! PAGE NOT BE FOUND\n </div>\n <p className=\"error-desc mt-2\">Sorry, but the page you are looking for does not exist. We must have removed, renamed or never created it <span aria-label=\"face\" role=\"img\">🤪</span></p>\n </div>\n </Container>\n );\n \n}\n\nexport default Error;"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/resources/images.tsx
|
|
2
|
+
var IMAGE_LINKS = {
|
|
3
|
+
SMALL_ICON: "https://i.ibb.co/24Qy7m1/Dhe-Quest64.png",
|
|
4
|
+
ICON: "https://i.ibb.co/60L36htP/Dhe-Quest128.png",
|
|
5
|
+
NAMELOGO: "https://i.ibb.co/qYhSRLJ4/Dhe-Quest128-Full.png",
|
|
6
|
+
WALLPAPER: "https://i.imgur.com/nBm1Ub3.png"
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { IMAGE_LINKS };
|
|
10
|
+
//# sourceMappingURL=chunk-F4BCZYRK.js.map
|
|
11
|
+
//# sourceMappingURL=chunk-F4BCZYRK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/images.tsx"],"names":[],"mappings":";AAAO,IAAM,WAAA,GAAc;AAAA,EACvB,UAAA,EAAa,0CAAA;AAAA,EACb,IAAA,EAAM,4CAAA;AAAA,EACN,QAAA,EAAU,iDAAA;AAAA,EACV,SAAA,EAAW;AACf","file":"chunk-F4BCZYRK.js","sourcesContent":["export const IMAGE_LINKS = {\n SMALL_ICON : 'https://i.ibb.co/24Qy7m1/Dhe-Quest64.png',\n ICON: \"https://i.ibb.co/60L36htP/Dhe-Quest128.png\",\n NAMELOGO: \"https://i.ibb.co/qYhSRLJ4/Dhe-Quest128-Full.png\",\n WALLPAPER: \"https://i.imgur.com/nBm1Ub3.png\",\n}"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IMAGE_LINKS } from './chunk-F4BCZYRK.js';
|
|
2
|
+
import Box from '@mui/material/Box';
|
|
3
|
+
import AppBar from '@mui/material/AppBar';
|
|
4
|
+
import Toolbar from '@mui/material/Toolbar';
|
|
5
|
+
import Stack from '@mui/material/Stack';
|
|
6
|
+
import { Button } from 'sspart-fe-lib';
|
|
7
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var Header = ({ navigate }) => {
|
|
10
|
+
const onClick = (name) => {
|
|
11
|
+
if (name) navigate(`/${name}`);
|
|
12
|
+
};
|
|
13
|
+
return /* @__PURE__ */ jsx(AppBar, { position: "static", color: "default", children: /* @__PURE__ */ jsxs(Toolbar, { children: [
|
|
14
|
+
/* @__PURE__ */ jsx(Box, { sx: { flexGrow: 1 }, children: /* @__PURE__ */ jsx("img", { className: "header-logo", alt: "...", src: IMAGE_LINKS.NAMELOGO }) }),
|
|
15
|
+
/* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, children: [
|
|
16
|
+
/* @__PURE__ */ jsx(Button, { name: "signup", onClick, variant: "text", text: "Sign Up" }),
|
|
17
|
+
/* @__PURE__ */ jsx(Button, { name: "signin", onClick, variant: "outlined", text: "Login" })
|
|
18
|
+
] }) })
|
|
19
|
+
] }) });
|
|
20
|
+
};
|
|
21
|
+
var header_default = Header;
|
|
22
|
+
|
|
23
|
+
export { header_default };
|
|
24
|
+
//# sourceMappingURL=chunk-IRLSI36D.js.map
|
|
25
|
+
//# sourceMappingURL=chunk-IRLSI36D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/landing.page/header.tsx"],"names":[],"mappings":";;;;;;;;AAaA,IAAM,MAAA,GAAgC,CAAC,EAAE,QAAA,EAAS,KAAM;AAEpD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AAC/B,IAAA,IAAI,IAAA,EAAM,QAAA,CAAS,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,2BACK,MAAA,EAAA,EAAO,QAAA,EAAS,UAAS,KAAA,EAAM,SAAA,EAC5B,+BAAC,OAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,QAAA,EAAU,GAAE,EACnB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAc,GAAA,EAAI,KAAA,EAAM,GAAA,EAAK,WAAA,CAAY,UAAU,CAAA,EACtE,CAAA;AAAA,wBACC,GAAA,EAAA,EACG,QAAA,kBAAA,IAAA,CAAC,SAAM,SAAA,EAAU,KAAA,EAAM,SAAS,CAAA,EAC5B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAO,IAAA,EAAK,QAAA,EAAS,SAAkB,OAAA,EAAQ,MAAA,EAAO,MAAK,SAAA,EAAS,CAAA;AAAA,sBACrE,GAAA,CAAC,UAAO,IAAA,EAAK,QAAA,EAAS,SAAkB,OAAA,EAAQ,UAAA,EAAW,MAAK,OAAA,EAAO;AAAA,KAAA,EAC3E,CAAA,EACJ;AAAA,GAAA,EACJ,CAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"chunk-IRLSI36D.js","sourcesContent":["import React from \"react\";\nimport Box from '@mui/material/Box';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Stack from '@mui/material/Stack';\nimport { useNavigate } from \"react-router-dom\";\nimport { Button } from \"sspart-fe-lib\";\nimport { IMAGE_LINKS } from \"../../resources/images\";\n\ninterface HeaderProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst Header: React.FC<HeaderProps> = ({ navigate }) => {\n\n const onClick = (name?: string) => {\n if (name) navigate(`/${name}`);\n };\n\n return (\n <AppBar position=\"static\" color=\"default\">\n <Toolbar>\n <Box sx={{ flexGrow: 1 }}>\n <img className=\"header-logo\" alt=\"...\" src={IMAGE_LINKS.NAMELOGO}></img>\n </Box>\n <Box >\n <Stack direction=\"row\" spacing={1}>\n <Button name=\"signup\" onClick={onClick} variant=\"text\" text=\"Sign Up\"/>\n <Button name=\"signin\" onClick={onClick} variant=\"outlined\" text=\"Login\"/>\n </Stack>\n </Box>\n </Toolbar>\n </AppBar>\n );\n};\n\nexport default Header;\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// src/resources/constants.tsx
|
|
2
|
+
var TITLES = {
|
|
3
|
+
LANDING_PAGE_TITLE: "DheQuest | Analyze and Automate Your Trades with Precision, Maximize Profits, and Stay Ahead of the Market",
|
|
4
|
+
DASHBOARD_PAGE_TITLE: "DheQuest | Your Trading Dashboard - Insights, Performance, and Automation",
|
|
5
|
+
SIGN_IN_PAGE_TITLE: "DheQuest | Securely Sign In to Your Automated Trading Platform",
|
|
6
|
+
ERROR_PAGE_TITLE: "DheQuest | Oops! Something Went Wrong"
|
|
7
|
+
};
|
|
8
|
+
var ON_RESIZE = 900;
|
|
9
|
+
|
|
10
|
+
export { ON_RESIZE, TITLES };
|
|
11
|
+
//# sourceMappingURL=chunk-IYKARRP3.js.map
|
|
12
|
+
//# sourceMappingURL=chunk-IYKARRP3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/constants.tsx"],"names":[],"mappings":";AAAO,IAAM,MAAA,GAAS;AAAA,EAClB,kBAAA,EAAoB,4GAAA;AAAA,EACpB,oBAAA,EAAsB,2EAAA;AAAA,EACtB,kBAAA,EAAoB,gEAAA;AAAA,EACpB,gBAAA,EAAkB;AACtB;AAEO,IAAM,SAAA,GAAY","file":"chunk-IYKARRP3.js","sourcesContent":["export const TITLES = {\n LANDING_PAGE_TITLE: \"DheQuest | Analyze and Automate Your Trades with Precision, Maximize Profits, and Stay Ahead of the Market\",\n DASHBOARD_PAGE_TITLE: \"DheQuest | Your Trading Dashboard - Insights, Performance, and Automation\",\n SIGN_IN_PAGE_TITLE: \"DheQuest | Securely Sign In to Your Automated Trading Platform\",\n ERROR_PAGE_TITLE: \"DheQuest | Oops! Something Went Wrong\",\n};\n\nexport const ON_RESIZE = 900;"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,3 +1,71 @@
|
|
|
1
|
+
import { TITLES } from './chunk-IYKARRP3.js';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import Container from '@mui/material/Container';
|
|
4
|
+
import PersonOutlineOutlinedIcon from '@mui/icons-material/PersonOutlineOutlined';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
import Box from '@mui/material/Box';
|
|
7
|
+
import Grid from '@mui/material/Grid';
|
|
8
|
+
import Card from '@mui/material/Card';
|
|
9
|
+
import Typography from '@mui/material/Typography';
|
|
10
|
+
import CardContent from '@mui/material/CardContent';
|
|
11
|
+
import { useNavigate } from 'react-router-dom';
|
|
1
12
|
|
|
13
|
+
var DASHBOARD_PAGE_OPTIONS = [
|
|
14
|
+
{
|
|
15
|
+
title: "User",
|
|
16
|
+
elements: [
|
|
17
|
+
{
|
|
18
|
+
title: "Profile",
|
|
19
|
+
to: "/profile",
|
|
20
|
+
icon: /* @__PURE__ */ jsx(PersonOutlineOutlinedIcon, {})
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
var NavigatorIcon = ({ to, icon, title }) => {
|
|
26
|
+
const navigate = useNavigate();
|
|
27
|
+
function onClick() {
|
|
28
|
+
navigate(to);
|
|
29
|
+
}
|
|
30
|
+
return /* @__PURE__ */ jsx("button", { className: "user-option", onClick, children: /* @__PURE__ */ jsxs("div", { children: [
|
|
31
|
+
/* @__PURE__ */ jsx("div", { children: icon }),
|
|
32
|
+
/* @__PURE__ */ jsx("div", { children: title })
|
|
33
|
+
] }) });
|
|
34
|
+
};
|
|
35
|
+
var navigator_icon_default = NavigatorIcon;
|
|
36
|
+
var NavigatorLink = ({ to, icon, title }) => {
|
|
37
|
+
return /* @__PURE__ */ jsx("a", { className: "user-option", href: to, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
38
|
+
/* @__PURE__ */ jsx("div", { children: icon }),
|
|
39
|
+
/* @__PURE__ */ jsx("div", { children: title })
|
|
40
|
+
] }) });
|
|
41
|
+
};
|
|
42
|
+
var navigator_link_default = NavigatorLink;
|
|
43
|
+
var BasicCard = ({ elements, title }) => {
|
|
44
|
+
function printElements() {
|
|
45
|
+
return elements.map((element) => {
|
|
46
|
+
if (element.external) {
|
|
47
|
+
return /* @__PURE__ */ jsx(Grid, { size: { xs: 3, md: 2 }, sx: { pt: 2, textAlign: "center" }, children: /* @__PURE__ */ jsx(navigator_link_default, { to: element.to, icon: element.icon, title: element.title }) }, element.title);
|
|
48
|
+
}
|
|
49
|
+
return /* @__PURE__ */ jsx(Grid, { size: { xs: 3, md: 2 }, sx: { pt: 2, textAlign: "center" }, children: /* @__PURE__ */ jsx(navigator_icon_default, { to: element.to, icon: element.icon, title: element.title }) }, element.title);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return /* @__PURE__ */ jsx(Card, { sx: { mt: 2 }, variant: "outlined", children: /* @__PURE__ */ jsxs(CardContent, { children: [
|
|
53
|
+
/* @__PURE__ */ jsx(Typography, { sx: { fontSize: 14 }, color: "text.secondary", gutterBottom: true, children: title }),
|
|
54
|
+
/* @__PURE__ */ jsx(Box, { sx: { flexGrow: 1 }, children: /* @__PURE__ */ jsx(Grid, { container: true, spacing: 0, children: printElements() }) })
|
|
55
|
+
] }) });
|
|
56
|
+
};
|
|
57
|
+
var card_default = BasicCard;
|
|
58
|
+
var DashboardPage = () => {
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
document.title = TITLES.DASHBOARD_PAGE_TITLE;
|
|
61
|
+
}, []);
|
|
62
|
+
const renderOptions = () => {
|
|
63
|
+
return DASHBOARD_PAGE_OPTIONS.map((page) => /* @__PURE__ */ jsx(card_default, { title: page.title, elements: page.elements }, page.title));
|
|
64
|
+
};
|
|
65
|
+
return /* @__PURE__ */ jsx(Container, { maxWidth: "md", sx: { mt: 2, mb: 4 }, children: renderOptions() });
|
|
66
|
+
};
|
|
67
|
+
var dashboard_page_default = DashboardPage;
|
|
68
|
+
|
|
69
|
+
export { dashboard_page_default as DashboardPage };
|
|
2
70
|
//# sourceMappingURL=index.js.map
|
|
3
71
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/components/user.page/constants.tsx","../src/components/user.page/navigator-icon.tsx","../src/components/user.page/navigator-link.tsx","../src/components/user.page/card.tsx","../src/pages/dashboard.page.tsx"],"names":["jsx","jsxs"],"mappings":";;;;;;;;;;;;AAeO,IAAM,sBAAA,GAAyB;AAAA,EAClC;AAAA,IACI,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU;AAAA,MACN;AAAA,QACI,KAAA,EAAO,SAAA;AAAA,QACP,EAAA,EAAI,UAAA;AAAA,QACJ,IAAA,sBAAO,yBAAA,EAAA,EAA0B;AAAA;AACrC;AACJ;AAER,CAAA;ACjBA,IAAM,gBAA8C,CAAC,EAAE,EAAA,EAAI,IAAA,EAAM,OAAM,KAAM;AAEzE,EAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,EAAA,SAAS,OAAA,GAAS;AAAE,IAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EAAG;AAElC,EAAA,uBACIA,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAU,aAAA,EAAc,OAAA,EAC5B,+BAAC,KAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAA,GAAAA,CAAC,SACI,QAAA,EAAA,IAAA,EACL,CAAA;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EACI,QAAA,EAAA,KAAA,EACL;AAAA,GAAA,EACJ,CAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,sBAAA,GAAQ,aAAA;ACrBf,IAAM,gBAA8C,CAAC,EAAE,EAAA,EAAI,IAAA,EAAM,OAAM,KAAM;AAEzE,EAAA,uBACIA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAc,IAAA,EAAM,EAAA,EAAI,MAAA,EAAO,QAAA,EAAS,GAAA,EAAI,qBAAA,EACrD,QAAA,kBAAAC,KAAC,KAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,SACI,QAAA,EAAA,IAAA,EACL,CAAA;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EACI,QAAA,EAAA,KAAA,EACL;AAAA,GAAA,EACJ,CAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,sBAAA,GAAQ,aAAA;ACJf,IAAM,SAAA,GAAsC,CAAC,EAAE,QAAA,EAAU,OAAM,KAAM;AAEjE,EAAA,SAAS,aAAA,GAAe;AACpB,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,KAAU;AAC3B,MAAA,IAAG,QAAQ,QAAA,EAAS;AAChB,QAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAyB,IAAA,EAAM,EAAC,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAC,EAAG,EAAA,EAAI,EAAE,IAAI,CAAA,EAAG,SAAA,EAAW,QAAA,EAAQ,EAC/E,QAAA,kBAAAA,GAAAA,CAAC,sBAAA,EAAA,EAAc,EAAA,EAAI,QAAQ,EAAA,EAAI,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,CAAA,EAAA,EAD9D,QAAQ,KAEtB,CAAA;AAAA,MACR;AACA,MAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAyB,IAAA,EAAM,EAAC,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAC,EAAG,EAAA,EAAI,EAAE,IAAI,CAAA,EAAG,SAAA,EAAW,QAAA,EAAQ,EAC3E,QAAA,kBAAAA,GAAAA,CAAC,sBAAA,EAAA,EAAc,EAAA,EAAI,QAAQ,EAAA,EAAI,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,CAAA,EAAA,EADlE,QAAQ,KAElB,CAAA;AAAA,IACZ,CAAC,CAAA;AAAA,EACL;AAEA,EAAA,uBACIA,GAAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAI,EAAE,EAAA,EAAI,CAAA,EAAE,EAAG,OAAA,EAAQ,UAAA,EACzB,QAAA,kBAAAC,IAAAA,CAAC,WAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAI,EAAE,QAAA,EAAU,EAAA,EAAG,EAAG,KAAA,EAAM,gBAAA,EAAiB,YAAA,EAAY,IAAA,EAChE,QAAA,EAAA,KAAA,EACL,CAAA;AAAA,oBACAA,GAAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,UAAU,CAAA,EAAE,EACnB,QAAA,kBAAAA,GAAAA,CAAC,QAAK,SAAA,EAAS,IAAA,EAAC,SAAS,CAAA,EACpB,QAAA,EAAA,aAAA,IACL,CAAA,EACJ;AAAA,GAAA,EACJ,CAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,YAAA,GAAQ,SAAA;AC7Cf,IAAM,gBAAgB,MAAM;AAExB,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,QAAA,CAAS,QAAQ,MAAA,CAAO,oBAAA;AAAA,EAC5B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAgB,MAAM;AACxB,IAAA,OAAO,sBAAA,CAAuB,GAAA,CAAI,CAAC,IAAA,qBAC/BA,GAAAA,CAAC,YAAA,EAAA,EAA2B,KAAA,EAAO,IAAA,CAAK,OAAO,QAAA,EAAU,IAAA,CAAK,QAAA,EAAA,EAA9C,IAAA,CAAK,KAAmD,CAC3E,CAAA;AAAA,EACL,CAAA;AAEA,EAAA,uBACIA,GAAAA,CAAC,SAAA,EAAA,EAAU,QAAA,EAAS,IAAA,EAAK,EAAA,EAAI,EAAE,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAE,EACvC,yBAAc,EACnB,CAAA;AAER,CAAA;AAEA,IAAO,sBAAA,GAAQ","file":"index.js","sourcesContent":["import PersonOutlineOutlinedIcon from '@mui/icons-material/PersonOutlineOutlined';\n\nexport const PAGE_OPTIONS = [\n {\n title: \"User\",\n elements: [\n {\n title: \"Profile\",\n to: \"/profile\",\n icon: <PersonOutlineOutlinedIcon />\n }\n ]\n }\n]\n\nexport const DASHBOARD_PAGE_OPTIONS = [\n {\n title: \"User\",\n elements: [\n {\n title: \"Profile\",\n to: \"/profile\",\n icon: <PersonOutlineOutlinedIcon />\n }\n ]\n }\n]","import React from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\ninterface NavigatorIconProps {\n to: string;\n icon: React.ReactNode;\n title: string;\n}\n\nconst NavigatorIcon: React.FC<NavigatorIconProps> = ({ to, icon, title }) => {\n \n const navigate = useNavigate();\n \n function onClick(){ navigate(to); }\n\n return (\n <button className=\"user-option\" onClick={onClick}>\n <div>\n <div>\n {icon}\n </div>\n <div>\n {title}\n </div>\n </div>\n </button>\n );\n}\n\nexport default NavigatorIcon;","import React from \"react\";\n\ninterface NavigatorLinkProps {\n to: string;\n icon: React.ReactNode;\n title: string;\n}\n\nconst NavigatorLink: React.FC<NavigatorLinkProps> = ({ to, icon, title }) => {\n\n return (\n <a className=\"user-option\" href={to} target=\"_blank\" rel=\"noopener noreferrer\">\n <div>\n <div>\n {icon}\n </div>\n <div>\n {title}\n </div>\n </div>\n </a>\n );\n}\n\nexport default NavigatorLink;","import Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Typography from '@mui/material/Typography';\nimport CardContent from '@mui/material/CardContent';\nimport NavigatorIcon from './navigator-icon';\nimport NavigatorLink from './navigator-link';\n\ninterface CardProps {\n title: string;\n to: string;\n icon: React.ReactNode;\n external?: boolean;\n}\n\ninterface BasicCardProps {\n elements: CardProps[];\n title: string;\n}\n\nconst BasicCard: React.FC<BasicCardProps> = ({ elements, title }) => {\n\n function printElements(){\n return elements.map((element)=>{\n if(element.external){\n return <Grid key={element.title} size={{xs: 3, md: 2}} sx={{ pt: 2, textAlign: 'center'}}>\n <NavigatorLink to={element.to} icon={element.icon} title={element.title}/>\n </Grid>\n }\n return <Grid key={element.title} size={{xs: 3, md: 2}} sx={{ pt: 2, textAlign: 'center'}}>\n <NavigatorIcon to={element.to} icon={element.icon} title={element.title}/>\n </Grid>\n })\n }\n\n return (\n <Card sx={{ mt: 2 }} variant=\"outlined\">\n <CardContent>\n <Typography sx={{ fontSize: 14 }} color=\"text.secondary\" gutterBottom>\n {title}\n </Typography>\n <Box sx={{ flexGrow: 1 }}>\n <Grid container spacing={0}>\n {printElements()}\n </Grid>\n </Box>\n </CardContent>\n </Card>\n );\n}\n\nexport default BasicCard;","import { useEffect } from \"react\";\nimport Container from '@mui/material/Container';\nimport { DASHBOARD_PAGE_OPTIONS } from '../components/user.page/constants';\nimport BasicCard from '../components/user.page/card';\nimport { TITLES } from \"../resources/constants\";\n\nconst DashboardPage = () => {\n\n useEffect(() => {\n document.title = TITLES.DASHBOARD_PAGE_TITLE;\n }, []);\n \n const renderOptions = () => {\n return DASHBOARD_PAGE_OPTIONS.map((page) => (\n <BasicCard key={page.title} title={page.title} elements={page.elements} />\n ));\n };\n\n return (\n <Container maxWidth=\"md\" sx={{ mt: 2, mb: 4 }}>\n {renderOptions()}\n </Container>\n );\n};\n\nexport default DashboardPage;\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* src/components/css/error.page.css */
|
|
2
|
+
.error-404 {
|
|
3
|
+
font-weight: 800;
|
|
4
|
+
letter-spacing: 0.1em;
|
|
5
|
+
}
|
|
6
|
+
.error-text {
|
|
7
|
+
font-weight: 800;
|
|
8
|
+
}
|
|
9
|
+
@media (max-width: 576px) {
|
|
10
|
+
.error-404 {
|
|
11
|
+
color: var(--alert-error);
|
|
12
|
+
font-size: 18vw;
|
|
13
|
+
}
|
|
14
|
+
.error-emoji {
|
|
15
|
+
font-size: 16vw;
|
|
16
|
+
}
|
|
17
|
+
.error-text {
|
|
18
|
+
font-size: 6vw;
|
|
19
|
+
}
|
|
20
|
+
.error-desc {
|
|
21
|
+
font-size: 3.25vw;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
@media (min-width: 576px) {
|
|
25
|
+
.error-404 {
|
|
26
|
+
color: var(--alert-error);
|
|
27
|
+
font-size: 8vw;
|
|
28
|
+
}
|
|
29
|
+
.error-emoji {
|
|
30
|
+
font-size: 7vw;
|
|
31
|
+
}
|
|
32
|
+
.error-text {
|
|
33
|
+
font-size: 4vw;
|
|
34
|
+
}
|
|
35
|
+
.error-desc {
|
|
36
|
+
font-size: 2vw;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
@media (min-width: 992px) {
|
|
40
|
+
.error-desc {
|
|
41
|
+
font-size: 1.5vw;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
.error-wrapper {
|
|
45
|
+
position: absolute;
|
|
46
|
+
top: 50%;
|
|
47
|
+
left: 50%;
|
|
48
|
+
transform: translate(-50%, -50%);
|
|
49
|
+
text-align: center;
|
|
50
|
+
}
|
|
51
|
+
/*# sourceMappingURL=error.page.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/css/error.page.css"],"sourcesContent":[".error-404{\n font-weight: 800;\n letter-spacing: 0.1em;\n}\n\n.error-text {\n font-weight: 800;\n}\n\n@media (max-width: 576px) {\n .error-404 {\n color: var(--alert-error);\n font-size: 18vw;\n }\n .error-emoji{\n font-size: 16vw;\n }\n .error-text{\n font-size: 6vw;\n }\n .error-desc{\n font-size: 3.25vw;\n }\n}\n\n@media (min-width: 576px) {\n .error-404 {\n color: var(--alert-error);\n font-size: 8vw;\n }\n .error-emoji{\n font-size: 7vw;\n }\n .error-text{\n font-size: 4vw;\n }\n .error-desc{\n font-size: 2vw;\n }\n}\n\n@media (min-width: 992px) {\n .error-desc{\n font-size: 1.5vw;\n }\n}\n\n.error-wrapper{\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}"],"mappings":";AAAA,CAAC;AACG,eAAa;AACb,kBAAgB;AACpB;AAEA,CAAC;AACG,eAAa;AACjB;AAEA,QAAO,WAAY;AACf,GAVH;AAWO,WAAO,IAAI;AACX,eAAW;AACf;AACA,GAAC;AACG,eAAW;AACf;AACA,GAZH;AAaO,eAAW;AACf;AACA,GAAC;AACG,eAAW;AACf;AACJ;AAEA,QAAO,WAAY;AACf,GA1BH;AA2BO,WAAO,IAAI;AACX,eAAW;AACf;AACA,GAhBC;AAiBG,eAAW;AACf;AACA,GA5BH;AA6BO,eAAW;AACf;AACA,GAhBC;AAiBG,eAAW;AACf;AACJ;AAEA,QAAO,WAAY;AACf,GAtBC;AAuBG,eAAW;AACf;AACJ;AAEA,CAAC;AACG,YAAU;AACV,OAAK;AACL,QAAM;AACN,aAAW,UAAU,IAAI,EAAE;AAC3B,cAAY;AAChB;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { error_default } from '../chunk-7SODGRB3.js';
|
|
2
|
+
import { TITLES } from '../chunk-IYKARRP3.js';
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var ErrorPage = () => {
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
document.title = TITLES.ERROR_PAGE_TITLE;
|
|
9
|
+
}, []);
|
|
10
|
+
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(error_default, {}) });
|
|
11
|
+
};
|
|
12
|
+
var error_page_default = ErrorPage;
|
|
13
|
+
|
|
14
|
+
export { error_page_default as default };
|
|
15
|
+
//# sourceMappingURL=error.page.js.map
|
|
16
|
+
//# sourceMappingURL=error.page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/pages/error.page.tsx"],"names":[],"mappings":";;;;;AAIA,IAAM,YAAuB,MAAM;AAE/B,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,QAAA,CAAS,QAAQ,MAAA,CAAO,gBAAA;AAAA,EAC5B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACI,GAAA,CAAC,KAAA,EAAA,EACG,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAM,CAAA,EACX,CAAA;AAER,CAAA;AAEA,IAAO,kBAAA,GAAQ","file":"error.page.js","sourcesContent":["import Error from '../components/error.page/error';\nimport { useEffect } from \"react\";\nimport { TITLES } from '../resources/constants';\n\nconst ErrorPage : React.FC = () => {\n\n useEffect(() => {\n document.title = TITLES.ERROR_PAGE_TITLE;\n }, []);\n\n return (\n <div>\n <Error />\n </div>\n );\n};\n\nexport default ErrorPage;\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* src/components/css/landing.page.css */
|
|
2
|
+
.header-logo {
|
|
3
|
+
width: 120px;
|
|
4
|
+
}
|
|
5
|
+
@media (max-width: 992px) {
|
|
6
|
+
.landing-info-header {
|
|
7
|
+
font-size: 36px;
|
|
8
|
+
font-weight: 800;
|
|
9
|
+
line-height: 42px;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
@media (min-width: 992px) {
|
|
13
|
+
.landing-info-header {
|
|
14
|
+
font-size: 36px;
|
|
15
|
+
font-weight: 800;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
.landing-info-sub-header {
|
|
19
|
+
font-size: 16px;
|
|
20
|
+
font-weight: 600;
|
|
21
|
+
line-height: 28px;
|
|
22
|
+
}
|
|
23
|
+
.landing-info-button {
|
|
24
|
+
cursor: pointer;
|
|
25
|
+
background-color: rgb(255, 75, 146);
|
|
26
|
+
border-radius: 25px;
|
|
27
|
+
color: var(--neutral-color);
|
|
28
|
+
border: none;
|
|
29
|
+
font-weight: 800;
|
|
30
|
+
padding-left: 25px;
|
|
31
|
+
padding-right: 25px;
|
|
32
|
+
padding-top: 10px;
|
|
33
|
+
padding-bottom: 10px;
|
|
34
|
+
}
|
|
35
|
+
.title-image-demo {
|
|
36
|
+
max-width: 100%;
|
|
37
|
+
width: 100%;
|
|
38
|
+
}
|
|
39
|
+
/*# sourceMappingURL=landing.page.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/css/landing.page.css"],"sourcesContent":[".header-logo{\n width: 120px;\n}\n\n@media (max-width: 992px) {\n .landing-info-header{\n font-size: 36px;\n font-weight: 800;\n line-height: 42px;\n }\n}\n\n@media (min-width: 992px) {\n .landing-info-header{\n font-size: 36px;\n font-weight: 800;\n }\n}\n\n.landing-info-sub-header{\n font-size: 16px;\n font-weight: 600;\n line-height: 28px;\n}\n\n.landing-info-button{\n cursor: pointer;\n background-color: rgb(255, 75, 146);\n border-radius: 25px;\n color: var(--neutral-color);\n border: none;\n font-weight: 800;\n padding-left: 25px;\n padding-right: 25px;\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.title-image-demo{\n max-width: 100%;\n width: 100%;\n}"],"mappings":";AAAA,CAAC;AACG,SAAO;AACX;AAEA,QAAO,WAAY;AACf,GAAC;AACG,eAAW;AACX,iBAAa;AACb,iBAAa;AACjB;AACJ;AAEA,QAAO,WAAY;AACf,GARC;AASG,eAAW;AACX,iBAAa;AACjB;AACJ;AAEA,CAAC;AACG,aAAW;AACX,eAAa;AACb,eAAa;AACjB;AAEA,CAAC;AACG,UAAQ;AACR,oBAAkB,IAAI,GAAG,EAAE,EAAE,EAAE;AAC/B,iBAAe;AACf,SAAO,IAAI;AACX,UAAQ;AACR,eAAa;AACb,gBAAc;AACd,iBAAe;AACf,eAAa;AACb,kBAAgB;AACpB;AAEA,CAAC;AACG,aAAW;AACX,SAAO;AACX;","names":[]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { header_default } from '../chunk-IRLSI36D.js';
|
|
2
|
+
import { TITLES } from '../chunk-IYKARRP3.js';
|
|
3
|
+
import { IMAGE_LINKS } from '../chunk-F4BCZYRK.js';
|
|
4
|
+
import { useEffect } from 'react';
|
|
5
|
+
import Box from '@mui/material/Box';
|
|
6
|
+
import { useTheme } from '@mui/material/styles';
|
|
7
|
+
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
8
|
+
import Container from '@mui/material/Container';
|
|
9
|
+
import Grid from '@mui/material/Grid';
|
|
10
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
11
|
+
import Typography from '@mui/material/Typography';
|
|
12
|
+
import CardContent from '@mui/material/CardContent';
|
|
13
|
+
import CameraAltIcon from '@mui/icons-material/CameraAlt';
|
|
14
|
+
import AddchartIcon from '@mui/icons-material/Addchart';
|
|
15
|
+
import BarChartIcon from '@mui/icons-material/BarChart';
|
|
16
|
+
import TimelineIcon from '@mui/icons-material/Timeline';
|
|
17
|
+
import CalendarMonthIcon from '@mui/icons-material/CalendarMonth';
|
|
18
|
+
import AccountBalanceIcon from '@mui/icons-material/AccountBalance';
|
|
19
|
+
import { LinkButton } from 'sspart-fe-lib';
|
|
20
|
+
|
|
21
|
+
var Hero = ({ navigate }) => {
|
|
22
|
+
const theme = useTheme();
|
|
23
|
+
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
|
|
24
|
+
const onClick = () => {
|
|
25
|
+
navigate("/signup");
|
|
26
|
+
};
|
|
27
|
+
return /* @__PURE__ */ jsx(Box, { display: "flex", flexDirection: "column", minHeight: "91.5vh", height: "auto", children: /* @__PURE__ */ jsx(Container, { style: { flex: "1", display: "flex", alignItems: "center" }, children: /* @__PURE__ */ jsxs(Grid, { container: true, alignItems: "center", children: [
|
|
28
|
+
/* @__PURE__ */ jsx(Grid, { size: { xs: 12, md: 5 }, className: "mt-4", children: /* @__PURE__ */ jsxs(Box, { children: [
|
|
29
|
+
/* @__PURE__ */ jsx("div", { className: "landing-info-header", children: "Trading platform with cutting-edge GTT capabilities." }),
|
|
30
|
+
/* @__PURE__ */ jsx("div", { className: "landing-info-sub-header mt-4", children: "Experience the future of trading with GTT. Elevate your strategies with DheQuest's superior service. The future is here\u2014trade smarter today." }),
|
|
31
|
+
/* @__PURE__ */ jsx("button", { className: "landing-info-button mt-4", onClick, children: "Sign Up" })
|
|
32
|
+
] }) }),
|
|
33
|
+
/* @__PURE__ */ jsx(Grid, { size: { xs: 12, md: 7 }, className: "mt-4", children: /* @__PURE__ */ jsx(Box, { display: "flex", justifyContent: isMobile ? "center" : "end", children: /* @__PURE__ */ jsx("img", { className: "title-image-demo", alt: "...", src: IMAGE_LINKS.WALLPAPER }) }) })
|
|
34
|
+
] }) }) });
|
|
35
|
+
};
|
|
36
|
+
var hero_default = Hero;
|
|
37
|
+
var FEATURES = [
|
|
38
|
+
{
|
|
39
|
+
title: "Advanced Order Types",
|
|
40
|
+
description: "Execute your trades with precision using a variety of advanced order types, including limit orders, stop-loss orders, take-profit orders, and more.",
|
|
41
|
+
icon: /* @__PURE__ */ jsx(CameraAltIcon, { sx: { fontSize: "3.5rem" } })
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "Real-time Market Depth",
|
|
45
|
+
description: "Gain valuable insights into market liquidity and order flow with real-time market depth data. See the current buy and sell order.",
|
|
46
|
+
icon: /* @__PURE__ */ jsx(AddchartIcon, { sx: { fontSize: "3.5rem" } })
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: "Margin Trading and Leverage",
|
|
50
|
+
description: "Amplify your trading power with margin trading and leverage. Access greater capital and potentially increase your profits.",
|
|
51
|
+
icon: /* @__PURE__ */ jsx(BarChartIcon, { sx: { fontSize: "3.5rem" } })
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
title: "Portfolio Analytics",
|
|
55
|
+
description: "Analyze your trading performance with detailed portfolio analytics. improvement and optimize your trading strategies.",
|
|
56
|
+
icon: /* @__PURE__ */ jsx(TimelineIcon, { sx: { fontSize: "3.5rem" } })
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: "Alerts and Notifications",
|
|
60
|
+
description: "Stay informed about critical market events with customizable alerts and notifications. important events to react quickly to market changes.",
|
|
61
|
+
icon: /* @__PURE__ */ jsx(CalendarMonthIcon, { sx: { fontSize: "3.5rem" } })
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: "API Access",
|
|
65
|
+
description: "Integrate our platform with your own trading tools and applications using our powerful API. Develop custom trading strategies.",
|
|
66
|
+
icon: /* @__PURE__ */ jsx(AccountBalanceIcon, { sx: { fontSize: "3.5rem" } })
|
|
67
|
+
}
|
|
68
|
+
];
|
|
69
|
+
var Features = () => {
|
|
70
|
+
return /* @__PURE__ */ jsxs(Box, { sx: { padding: 6, backgroundColor: "#f9f9f9" }, children: [
|
|
71
|
+
/* @__PURE__ */ jsxs(Container, { children: [
|
|
72
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h4", align: "center", gutterBottom: true, mb: 4, sx: { fontWeight: "bold" }, children: "Key Features" }),
|
|
73
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", align: "center", gutterBottom: true, mb: 4, sx: { lineHeight: "40px " }, children: "Automate your trading strategies with our robust algorithmic trading capabilities. Develop, backtest, and deploy custom trading bots to execute trades based on predefined rules and parameters, allowing you to capitalize on market opportunities 24/7." })
|
|
74
|
+
] }),
|
|
75
|
+
/* @__PURE__ */ jsx(Grid, { container: true, spacing: 6, marginBottom: 4, paddingTop: 4, children: FEATURES.map((feature, index) => /* @__PURE__ */ jsx(Grid, { size: { xs: 12, sm: 6, md: 4 }, textAlign: "center", children: /* @__PURE__ */ jsxs(CardContent, { children: [
|
|
76
|
+
feature.icon,
|
|
77
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", sx: { fontWeight: "bold" }, gutterBottom: true, children: feature.title }),
|
|
78
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", gutterBottom: true, sx: { lineHeight: "40px " }, children: feature.description })
|
|
79
|
+
] }) }, index)) })
|
|
80
|
+
] });
|
|
81
|
+
};
|
|
82
|
+
var features_default = Features;
|
|
83
|
+
var Footer = ({ navigate }) => {
|
|
84
|
+
const onClick = (name) => {
|
|
85
|
+
if (name) navigate(`/${name}`);
|
|
86
|
+
};
|
|
87
|
+
return /* @__PURE__ */ jsxs(Box, { sx: { textAlign: "center", padding: 4, backgroundColor: "#f9f9f9" }, children: [
|
|
88
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "body2", gutterBottom: true, children: [
|
|
89
|
+
/* @__PURE__ */ jsx(LinkButton, { name: "privacy-policy", text: "Privacy Policy", onClick }),
|
|
90
|
+
" | ",
|
|
91
|
+
/* @__PURE__ */ jsx(LinkButton, { name: "terms-and-conditions", text: "Terms and Conditions", onClick }),
|
|
92
|
+
" | ",
|
|
93
|
+
/* @__PURE__ */ jsx(LinkButton, { name: "cookie-policy", text: "Cookie Policy", onClick }),
|
|
94
|
+
" "
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "body2", color: "textSecondary", children: [
|
|
97
|
+
"\xA9 ",
|
|
98
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
99
|
+
" SSPART Enterprise Pvt Ltd. All rights reserved."
|
|
100
|
+
] }),
|
|
101
|
+
/* @__PURE__ */ jsx(Box, { sx: { marginTop: 2 }, children: /* @__PURE__ */ jsx(LinkButton, { name: "contact-us", text: "Contact Us", className: "wrapped-btn outlined-btn", onClick }) })
|
|
102
|
+
] });
|
|
103
|
+
};
|
|
104
|
+
var footer_default = Footer;
|
|
105
|
+
var LandingPage = ({ navigate }) => {
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
document.title = TITLES.LANDING_PAGE_TITLE;
|
|
108
|
+
}, []);
|
|
109
|
+
return /* @__PURE__ */ jsxs(Box, { sx: { width: "100%" }, children: [
|
|
110
|
+
/* @__PURE__ */ jsx(header_default, { navigate }),
|
|
111
|
+
/* @__PURE__ */ jsx(hero_default, { navigate }),
|
|
112
|
+
/* @__PURE__ */ jsx(features_default, {}),
|
|
113
|
+
/* @__PURE__ */ jsx(footer_default, { navigate })
|
|
114
|
+
] });
|
|
115
|
+
};
|
|
116
|
+
var landing_page_default = LandingPage;
|
|
117
|
+
|
|
118
|
+
export { landing_page_default as default };
|
|
119
|
+
//# sourceMappingURL=landing.page.js.map
|
|
120
|
+
//# sourceMappingURL=landing.page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/landing.page/hero.tsx","../../src/components/landing.page/constants.tsx","../../src/components/landing.page/features.tsx","../../src/components/landing.page/footer.tsx","../../src/pages/landing.page.tsx"],"names":["jsx","jsxs","Box","Container","Grid","Typography"],"mappings":";;;;;;;;;;;;;;;;;;;;AAaA,IAAM,IAAA,GAA4B,CAAC,EAAE,QAAA,EAAS,KAAM;AAEhD,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,WAAW,aAAA,CAAc,KAAA,CAAM,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA;AAE3D,EAAA,MAAM,UAAU,MAAM;AAClB,IAAA,QAAA,CAAS,SAAS,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,uBACI,GAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,aAAA,EAAc,QAAA,EAAS,SAAA,EAAU,QAAA,EAAS,MAAA,EAAO,MAAA,EACjE,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,EAAE,IAAA,EAAM,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAS,EACjE,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,UAAA,EAAW,QAAA,EACvB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAC,EAAA,EAAG,EAAA,EAAI,EAAA,EAAG,CAAA,EAAC,EAAG,SAAA,EAAU,MAAA,EACjC,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EAAsB,QAAA,EAAA,sDAAA,EAErC,CAAA;AAAA,sBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAA+B,QAAA,EAAA,mJAAA,EAE9C,CAAA;AAAA,sBACA,GAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,0BAAA,EAA2B,SAAkB,QAAA,EAAA,SAAA,EAAO;AAAA,KAAA,EAC1E,CAAA,EACJ,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAC,EAAA,EAAG,EAAA,EAAI,EAAA,EAAG,CAAA,EAAC,EAAG,SAAA,EAAU,MAAA,EACjC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,cAAA,EAAgB,QAAA,GAAW,QAAA,GAAW,KAAA,EACtD,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,GAAA,EAAI,KAAA,EAAM,GAAA,EAAK,WAAA,CAAY,SAAA,EAAW,GAC5E,CAAA,EACJ;AAAA,GAAA,EACJ,GACJ,CAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,YAAA,GAAQ,IAAA;ACzCR,IAAM,QAAA,GAAW;AAAA,EACpB;AAAA,IACI,KAAA,EAAO,sBAAA;AAAA,IACP,WAAA,EACI,qJAAA;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAI,EAAE,QAAA,EAAU,UAAS,EAAE;AAAA,GACpD;AAAA,EACA;AAAA,IACI,KAAA,EAAO,wBAAA;AAAA,IACP,WAAA,EACI,mIAAA;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAI,EAAE,QAAA,EAAU,UAAS,EAAE;AAAA,GACnD;AAAA,EACA;AAAA,IACI,KAAA,EAAO,6BAAA;AAAA,IACP,WAAA,EACI,4HAAA;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAI,EAAE,QAAA,EAAU,UAAS,EAAE;AAAA,GACnD;AAAA,EACA;AAAA,IACI,KAAA,EAAO,qBAAA;AAAA,IACP,WAAA,EAAa,uHAAA;AAAA,IACb,IAAA,kBAAMA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAI,EAAE,QAAA,EAAU,UAAS,EAAE;AAAA,GACnD;AAAA,EACA;AAAA,IACI,KAAA,EAAO,0BAAA;AAAA,IACP,WAAA,EAAa,6IAAA;AAAA,IACb,IAAA,kBAAMA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,IAAI,EAAE,QAAA,EAAU,UAAS,EAAE;AAAA,GACxD;AAAA,EACA;AAAA,IACI,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,gIAAA;AAAA,IACb,IAAA,kBAAMA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,IAAI,EAAE,QAAA,EAAU,UAAS,EAAE;AAAA;AAE7D,CAAA;ACjCA,IAAM,WAAqB,MAAM;AAE7B,EAAA,uBACIC,IAAAA,CAACC,GAAAA,EAAA,EAAI,EAAA,EAAI,EAAE,OAAA,EAAS,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAU,EAC9C,QAAA,EAAA;AAAA,oBAAAD,IAAAA,CAACE,WAAA,EACG,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,IAAA,EAAK,OAAM,QAAA,EAAS,YAAA,EAAY,IAAA,EAAC,EAAA,EAAI,GAAG,EAAA,EAAI,EAAE,UAAA,EAAY,MAAA,IAAU,QAAA,EAAA,cAAA,EAExF,CAAA;AAAA,sBACAA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,OAAM,QAAA,EAAS,YAAA,EAAY,IAAA,EAAC,EAAA,EAAI,GAAG,EAAA,EAAI,EAAC,UAAA,EAAY,OAAA,IAAU,QAAA,EAAA,2PAAA,EAI1F;AAAA,KAAA,EACJ,CAAA;AAAA,oBACAA,GAAAA,CAACI,IAAAA,EAAA,EAAK,WAAS,IAAA,EAAC,OAAA,EAAS,CAAA,EAAG,YAAA,EAAc,GAAG,UAAA,EAAY,CAAA,EACpD,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,qBACpBJ,GAAAA,CAACI,IAAAA,EAAA,EAAK,IAAA,EAAM,EAAC,IAAI,EAAA,EAAI,EAAA,EAAG,CAAA,EAAG,EAAA,EAAG,GAAC,EAAe,SAAA,EAAU,QAAA,EACpD,QAAA,kBAAAH,KAAC,WAAA,EAAA,EACI,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,IAAA;AAAA,sBACTD,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,IAAA,EAAK,EAAA,EAAI,EAAE,UAAA,EAAY,MAAA,EAAO,EAAG,YAAA,EAAY,IAAA,EAC5D,kBAAQ,KAAA,EACb,CAAA;AAAA,sBACAA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,YAAA,EAAY,IAAA,EAAC,EAAA,EAAI,EAAC,UAAA,EAAY,OAAA,EAAO,EAC5D,kBAAQ,WAAA,EACb;AAAA,KAAA,EACJ,CAAA,EAAA,EATmC,KAUvC,CACH,CAAA,EACL;AAAA,GAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,gBAAA,GAAQ,QAAA;AC/Bf,IAAM,MAAA,GAAgC,CAAC,EAAE,QAAA,EAAS,KAAM;AAEpD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AAC/B,IAAA,IAAI,IAAA,EAAM,QAAA,CAAS,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,uBACIC,IAAAA,CAACC,GAAAA,EAAA,EAAI,EAAA,EAAI,EAAE,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAS,EAClE,QAAA,EAAA;AAAA,oBAAAD,KAACI,UAAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,cAAY,IAAA,EACpC,QAAA,EAAA;AAAA,sBAAAL,IAAC,UAAA,EAAA,EAAW,IAAA,EAAK,gBAAA,EAAiB,IAAA,EAAK,kBAAiB,OAAA,EAAiB,CAAA;AAAA,MAAG,KAAA;AAAA,sBAC5EA,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAK,sBAAA,EAAuB,IAAA,EAAK,wBAAuB,OAAA,EAAiB,CAAA;AAAA,MAAG,KAAA;AAAA,sBACxFA,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAK,eAAA,EAAgB,IAAA,EAAK,iBAAgB,OAAA,EAAiB,CAAA;AAAA,MAAG;AAAA,KAAA,EAC9E,CAAA;AAAA,oBACAC,IAAAA,CAACI,UAAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,OAAM,eAAA,EAAgB,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,MAAA,iBACtC,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,MAAE;AAAA,KAAA,EACrC,CAAA;AAAA,oBACAL,GAAAA,CAACE,GAAAA,EAAA,EAAI,EAAA,EAAI,EAAE,WAAW,CAAA,EAAE,EACpB,0BAAAF,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAK,YAAA,EAAa,IAAA,EAAK,cAAa,SAAA,EAAU,0BAAA,EAA2B,SAAiB,CAAA,EAC1G;AAAA,GAAA,EACJ,CAAA;AAER,CAAA;AAEA,IAAO,cAAA,GAAQ,MAAA;ACnBf,IAAM,WAAA,GAA0C,CAAC,EAAE,QAAA,EAAS,KAAM;AAE9D,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,QAAA,CAAS,QAAQ,MAAA,CAAO,kBAAA;AAAA,EAC5B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACIC,KAACC,GAAAA,EAAA,EAAI,IAAI,EAAE,KAAA,EAAO,QAAO,EACrB,QAAA,EAAA;AAAA,oBAAAF,GAAAA,CAAC,kBAAO,QAAA,EAAmB,CAAA;AAAA,oBAC3BA,GAAAA,CAAC,YAAA,EAAA,EAAK,QAAA,EAAmB,CAAA;AAAA,oBACzBA,IAAC,gBAAA,EAAA,EAAS,CAAA;AAAA,oBACVA,GAAAA,CAAC,cAAA,EAAA,EAAO,QAAA,EAAmB;AAAA,GAAA,EAC/B,CAAA;AAER,CAAA;AAEA,IAAO,oBAAA,GAAQ","file":"landing.page.js","sourcesContent":["import React from \"react\";\nimport Box from '@mui/material/Box';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport Container from '@mui/material/Container';\nimport Grid from '@mui/material/Grid';\nimport { useNavigate } from \"react-router-dom\";\nimport { IMAGE_LINKS } from \"../../resources/images\";\n\ninterface HeroProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst Hero: React.FC<HeroProps> = ({ navigate }) => {\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n \n const onClick = () => {\n navigate('/signup');\n };\n\n return (\n <Box display=\"flex\" flexDirection=\"column\" minHeight=\"91.5vh\" height=\"auto\">\n <Container style={{ flex: '1', display: 'flex', alignItems: 'center' }}>\n <Grid container alignItems=\"center\">\n <Grid size={{xs:12, md:5}} className='mt-4'>\n <Box>\n <div className=\"landing-info-header\">\n Trading platform with cutting-edge GTT capabilities.\n </div>\n <div className=\"landing-info-sub-header mt-4\">\n Experience the future of trading with GTT. Elevate your strategies with DheQuest's superior service. The future is here—trade smarter today.\n </div>\n <button className=\"landing-info-button mt-4\" onClick={onClick}>Sign Up</button>\n </Box>\n </Grid>\n <Grid size={{xs:12, md:7}} className='mt-4' >\n <Box display=\"flex\" justifyContent={isMobile ? \"center\" : \"end\"}>\n <img className=\"title-image-demo\" alt=\"...\" src={IMAGE_LINKS.WALLPAPER}></img>\n </Box>\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\n\nexport default Hero;\n","import CameraAltIcon from '@mui/icons-material/CameraAlt';\nimport AddchartIcon from '@mui/icons-material/Addchart';\nimport BarChartIcon from '@mui/icons-material/BarChart';\nimport TimelineIcon from '@mui/icons-material/Timeline';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\nimport AccountBalanceIcon from '@mui/icons-material/AccountBalance';\n\nexport const FEATURES = [\n {\n title: \"Advanced Order Types\",\n description:\n \"Execute your trades with precision using a variety of advanced order types, including limit orders, stop-loss orders, take-profit orders, and more.\",\n icon: <CameraAltIcon sx={{ fontSize: '3.5rem' }}/>\n },\n {\n title: \"Real-time Market Depth\",\n description:\n \"Gain valuable insights into market liquidity and order flow with real-time market depth data. See the current buy and sell order.\",\n icon: <AddchartIcon sx={{ fontSize: '3.5rem' }}/>\n },\n {\n title: \"Margin Trading and Leverage\",\n description:\n \"Amplify your trading power with margin trading and leverage. Access greater capital and potentially increase your profits.\",\n icon: <BarChartIcon sx={{ fontSize: '3.5rem' }}/>\n },\n {\n title: \"Portfolio Analytics\",\n description: \"Analyze your trading performance with detailed portfolio analytics. improvement and optimize your trading strategies.\",\n icon: <TimelineIcon sx={{ fontSize: '3.5rem' }}/>\n },\n {\n title: \"Alerts and Notifications\",\n description: \"Stay informed about critical market events with customizable alerts and notifications. important events to react quickly to market changes.\",\n icon: <CalendarMonthIcon sx={{ fontSize: '3.5rem' }}/>\n },\n {\n title: \"API Access\",\n description: \"Integrate our platform with your own trading tools and applications using our powerful API. Develop custom trading strategies.\",\n icon: <AccountBalanceIcon sx={{ fontSize: '3.5rem' }}/>\n }\n];","import React from \"react\";\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport CardContent from '@mui/material/CardContent';\nimport { FEATURES } from \"./constants\";\n\nconst Features: React.FC = () => {\n\n return (\n <Box sx={{ padding: 6, backgroundColor: \"#f9f9f9\" }}>\n <Container>\n <Typography variant=\"h4\" align=\"center\" gutterBottom mb={4} sx={{ fontWeight: \"bold\" }}>\n Key Features\n </Typography>\n <Typography variant=\"body2\" align=\"center\" gutterBottom mb={4} sx={{lineHeight: '40px '}}>\n Automate your trading strategies with our robust algorithmic trading capabilities. \n Develop, backtest, and deploy custom trading bots to execute trades based on predefined rules and parameters, \n allowing you to capitalize on market opportunities 24/7.\n </Typography>\n </Container>\n <Grid container spacing={6} marginBottom={4} paddingTop={4}>\n {FEATURES.map((feature, index) => (\n <Grid size={{xs: 12, sm:6, md:4}} key={index} textAlign=\"center\">\n <CardContent>\n {feature.icon}\n <Typography variant=\"h6\" sx={{ fontWeight: \"bold\" }} gutterBottom>\n {feature.title}\n </Typography>\n <Typography variant=\"body2\" gutterBottom sx={{lineHeight: '40px '}}>\n {feature.description}\n </Typography>\n </CardContent>\n </Grid>\n ))}\n </Grid>\n </Box>\n );\n};\n\nexport default Features;\n","import React from \"react\";\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport { useNavigate } from \"react-router-dom\";\nimport { LinkButton } from \"sspart-fe-lib\";\n\ninterface FooterProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst Footer: React.FC<FooterProps> = ({ navigate }) => {\n\n const onClick = (name?: string) => {\n if (name) navigate(`/${name}`);\n };\n\n return (\n <Box sx={{ textAlign: \"center\", padding: 4, backgroundColor: \"#f9f9f9\"}}>\n <Typography variant=\"body2\" gutterBottom>\n <LinkButton name=\"privacy-policy\" text=\"Privacy Policy\" onClick={onClick}/>{\" | \"}\n <LinkButton name=\"terms-and-conditions\" text=\"Terms and Conditions\" onClick={onClick}/>{\" | \"}\n <LinkButton name=\"cookie-policy\" text=\"Cookie Policy\" onClick={onClick}/>{\" \"}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n © {new Date().getFullYear()} SSPART Enterprise Pvt Ltd. All rights reserved.\n </Typography>\n <Box sx={{ marginTop: 2 }}>\n <LinkButton name=\"contact-us\" text=\"Contact Us\" className=\"wrapped-btn outlined-btn\" onClick={onClick}/>\n </Box>\n </Box>\n );\n};\n\nexport default Footer;\n","import '../components/css/landing.page.css';\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Box from '@mui/material/Box';\nimport Header from \"../components/landing.page/header\";\nimport Hero from \"../components/landing.page/hero\";\nimport Features from \"../components/landing.page/features\";\nimport Footer from \"../components/landing.page/footer\";\nimport { TITLES } from '../resources/constants';\n\ninterface LandingPageProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst LandingPage: React.FC<LandingPageProps> = ({ navigate }) => {\n\n useEffect(() => {\n document.title = TITLES.LANDING_PAGE_TITLE;\n }, []);\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Header navigate={navigate}/>\n <Hero navigate={navigate}/>\n <Features />\n <Footer navigate={navigate}/>\n </Box>\n );\n};\n\nexport default LandingPage;\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ON_RESIZE } from '../chunk-IYKARRP3.js';
|
|
2
|
+
import { Resize } from 'sspart-fe-lib';
|
|
3
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var LayoutPage = ({ children, Header, Footer, username }) => {
|
|
6
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
7
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
8
|
+
/* @__PURE__ */ jsx(Resize, { maxWidth: ON_RESIZE, ShortElement: /* @__PURE__ */ jsx(Fragment, {}), LongElement: /* @__PURE__ */ jsx(Header, { username }) }),
|
|
9
|
+
children
|
|
10
|
+
] }),
|
|
11
|
+
/* @__PURE__ */ jsx(Resize, { maxWidth: ON_RESIZE, ShortElement: /* @__PURE__ */ jsx(Footer, {}), LongElement: /* @__PURE__ */ jsx(Fragment, {}) })
|
|
12
|
+
] });
|
|
13
|
+
};
|
|
14
|
+
var layout_page_default = LayoutPage;
|
|
15
|
+
|
|
16
|
+
export { layout_page_default as default };
|
|
17
|
+
//# sourceMappingURL=layout.page.js.map
|
|
18
|
+
//# sourceMappingURL=layout.page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/pages/layout.page.tsx"],"names":[],"mappings":";;;;AAUA,IAAM,aAAwC,CAAC,EAAE,UAAU,MAAA,EAAQ,MAAA,EAAQ,UAAS,KAAM;AAEtF,EAAA,4BACK,KAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAU,SAAA,EAAW,YAAA,kBAAc,GAAA,CAAA,QAAA,EAAA,EAAE,GAAK,WAAA,kBAAa,GAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAmB,CAAA,EAAI,CAAA;AAAA,MAC7F;AAAA,KAAA,EACL,CAAA;AAAA,oBACA,GAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAU,SAAA,EAAW,YAAA,sBAAe,MAAA,EAAA,EAAO,CAAA,EAAI,WAAA,kBAAa,GAAA,CAAA,QAAA,EAAA,EAAE,CAAA,EAAI;AAAA,GAAA,EAC9E,CAAA;AAER,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"layout.page.js","sourcesContent":["import { Resize } from \"sspart-fe-lib\";\nimport { ON_RESIZE } from '../resources/constants';\n\ninterface LayoutPageProps {\n children: React.ReactNode;\n Header: React.ElementType;\n Footer: React.ElementType;\n username: String;\n}\n\nconst LayoutPage: React.FC<LayoutPageProps> = ({ children, Header, Footer, username }) => {\n \n return (\n <div>\n <div>\n <Resize maxWidth={ON_RESIZE} ShortElement={<></>} LongElement={<Header username={username}/>} />\n {children}\n </div>\n <Resize maxWidth={ON_RESIZE} ShortElement={<Footer />} LongElement={<></>}/>\n </div>\n );\n};\n\nexport default LayoutPage;\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* src/components/css/error.page.css */
|
|
2
|
+
.error-404 {
|
|
3
|
+
font-weight: 800;
|
|
4
|
+
letter-spacing: 0.1em;
|
|
5
|
+
}
|
|
6
|
+
.error-text {
|
|
7
|
+
font-weight: 800;
|
|
8
|
+
}
|
|
9
|
+
@media (max-width: 576px) {
|
|
10
|
+
.error-404 {
|
|
11
|
+
color: var(--alert-error);
|
|
12
|
+
font-size: 18vw;
|
|
13
|
+
}
|
|
14
|
+
.error-emoji {
|
|
15
|
+
font-size: 16vw;
|
|
16
|
+
}
|
|
17
|
+
.error-text {
|
|
18
|
+
font-size: 6vw;
|
|
19
|
+
}
|
|
20
|
+
.error-desc {
|
|
21
|
+
font-size: 3.25vw;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
@media (min-width: 576px) {
|
|
25
|
+
.error-404 {
|
|
26
|
+
color: var(--alert-error);
|
|
27
|
+
font-size: 8vw;
|
|
28
|
+
}
|
|
29
|
+
.error-emoji {
|
|
30
|
+
font-size: 7vw;
|
|
31
|
+
}
|
|
32
|
+
.error-text {
|
|
33
|
+
font-size: 4vw;
|
|
34
|
+
}
|
|
35
|
+
.error-desc {
|
|
36
|
+
font-size: 2vw;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
@media (min-width: 992px) {
|
|
40
|
+
.error-desc {
|
|
41
|
+
font-size: 1.5vw;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
.error-wrapper {
|
|
45
|
+
position: absolute;
|
|
46
|
+
top: 50%;
|
|
47
|
+
left: 50%;
|
|
48
|
+
transform: translate(-50%, -50%);
|
|
49
|
+
text-align: center;
|
|
50
|
+
}
|
|
51
|
+
/*# sourceMappingURL=logout-error.page.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/css/error.page.css"],"sourcesContent":[".error-404{\n font-weight: 800;\n letter-spacing: 0.1em;\n}\n\n.error-text {\n font-weight: 800;\n}\n\n@media (max-width: 576px) {\n .error-404 {\n color: var(--alert-error);\n font-size: 18vw;\n }\n .error-emoji{\n font-size: 16vw;\n }\n .error-text{\n font-size: 6vw;\n }\n .error-desc{\n font-size: 3.25vw;\n }\n}\n\n@media (min-width: 576px) {\n .error-404 {\n color: var(--alert-error);\n font-size: 8vw;\n }\n .error-emoji{\n font-size: 7vw;\n }\n .error-text{\n font-size: 4vw;\n }\n .error-desc{\n font-size: 2vw;\n }\n}\n\n@media (min-width: 992px) {\n .error-desc{\n font-size: 1.5vw;\n }\n}\n\n.error-wrapper{\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}"],"mappings":";AAAA,CAAC;AACG,eAAa;AACb,kBAAgB;AACpB;AAEA,CAAC;AACG,eAAa;AACjB;AAEA,QAAO,WAAY;AACf,GAVH;AAWO,WAAO,IAAI;AACX,eAAW;AACf;AACA,GAAC;AACG,eAAW;AACf;AACA,GAZH;AAaO,eAAW;AACf;AACA,GAAC;AACG,eAAW;AACf;AACJ;AAEA,QAAO,WAAY;AACf,GA1BH;AA2BO,WAAO,IAAI;AACX,eAAW;AACf;AACA,GAhBC;AAiBG,eAAW;AACf;AACA,GA5BH;AA6BO,eAAW;AACf;AACA,GAhBC;AAiBG,eAAW;AACf;AACJ;AAEA,QAAO,WAAY;AACf,GAtBC;AAuBG,eAAW;AACf;AACJ;AAEA,CAAC;AACG,YAAU;AACV,OAAK;AACL,QAAM;AACN,aAAW,UAAU,IAAI,EAAE;AAC3B,cAAY;AAChB;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { error_default } from '../chunk-7SODGRB3.js';
|
|
2
|
+
import { header_default } from '../chunk-IRLSI36D.js';
|
|
3
|
+
import { IMAGE_LINKS } from '../chunk-F4BCZYRK.js';
|
|
4
|
+
import Box from '@mui/material/Box';
|
|
5
|
+
import { auth, Loading } from 'sspart-fe-lib';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var LoadingComp = () => {
|
|
9
|
+
return /* @__PURE__ */ jsx(Loading, { path: IMAGE_LINKS.SMALL_ICON });
|
|
10
|
+
};
|
|
11
|
+
var loading_default = LoadingComp;
|
|
12
|
+
var LogoutErrorPage = ({ navigate }) => {
|
|
13
|
+
if (auth.isAuthenticated()) return /* @__PURE__ */ jsx(loading_default, {});
|
|
14
|
+
return /* @__PURE__ */ jsxs(Box, { sx: { width: "100%" }, children: [
|
|
15
|
+
/* @__PURE__ */ jsx(header_default, { navigate }),
|
|
16
|
+
/* @__PURE__ */ jsx(error_default, {})
|
|
17
|
+
] });
|
|
18
|
+
};
|
|
19
|
+
var logout_error_page_default = LogoutErrorPage;
|
|
20
|
+
|
|
21
|
+
export { logout_error_page_default as default };
|
|
22
|
+
//# sourceMappingURL=logout-error.page.js.map
|
|
23
|
+
//# sourceMappingURL=logout-error.page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/common/loading.tsx","../../src/pages/logout-error.page.tsx"],"names":["jsx"],"mappings":";;;;;;;AAGA,IAAM,cAAc,MAAM;AAEtB,EAAA,uBACI,GAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,WAAA,CAAY,UAAA,EAAY,CAAA;AAE/C,CAAA;AAEA,IAAO,eAAA,GAAQ,WAAA;ACCf,IAAM,eAAA,GAA8C,CAAC,EAAE,QAAA,EAAS,KAAM;AAElE,EAAA,IAAG,KAAK,eAAA,EAAgB,EAAG,uBAAOA,IAAC,eAAA,EAAA,EAAQ,CAAA;AAE3C,EAAA,4BAAQ,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,KAAA,EAAO,QAAO,EAC5B,QAAA,EAAA;AAAA,oBAAAA,GAAAA,CAAC,kBAAO,QAAA,EAAmB,CAAA;AAAA,oBAC3BA,IAAC,aAAA,EAAA,EAAM;AAAA,GAAA,EACX,CAAA;AAEJ,CAAA;AAEA,IAAO,yBAAA,GAAQ","file":"logout-error.page.js","sourcesContent":["import { Loading } from \"sspart-fe-lib\";\nimport { IMAGE_LINKS } from \"../../resources/images\";\n\nconst LoadingComp = () => {\n\n return (\n <Loading path={IMAGE_LINKS.SMALL_ICON} />\n );\n};\n\nexport default LoadingComp;\n","import Box from '@mui/material/Box';\nimport Error from '../components/error.page/error';\nimport { auth } from \"sspart-fe-lib\";\nimport Loading from \"../components/common/loading\";\nimport Header from '../components/landing.page/header';\nimport { useNavigate } from 'react-router-dom';\n\ninterface LogoutErrorProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst LogoutErrorPage: React.FC<LogoutErrorProps> = ({ navigate }) => {\n\n if(auth.isAuthenticated()) return <Loading />\n\n return <Box sx={{ width: \"100%\" }}>\n <Header navigate={navigate}/>\n <Error />\n </Box>\n \n}\n\nexport default LogoutErrorPage;"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* src/components/css/sign-in.page.css */
|
|
2
|
+
.sign-in-card-wrapper {
|
|
3
|
+
width: auto;
|
|
4
|
+
min-height: auto;
|
|
5
|
+
height: auto;
|
|
6
|
+
margin: auto !important;
|
|
7
|
+
padding: 20px;
|
|
8
|
+
}
|
|
9
|
+
.small-btn-link-p {
|
|
10
|
+
font-size: 14px !important;
|
|
11
|
+
}
|
|
12
|
+
/*# sourceMappingURL=signin.page.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/css/sign-in.page.css"],"sourcesContent":[".sign-in-card-wrapper{\n width: auto;\n min-height: auto;\n height: auto;\n margin: auto !important;\n padding: 20px;\n}\n\n.small-btn-link-p {\n font-size: 14px !important;\n}\n"],"mappings":";AAAA,CAAC;AACG,SAAO;AACP,cAAY;AACZ,UAAQ;AACR,UAAQ;AACR,WAAS;AACb;AAEA,CAAC;AACG,aAAW;AACf;","names":[]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { TITLES } from '../chunk-IYKARRP3.js';
|
|
2
|
+
import { IMAGE_LINKS } from '../chunk-F4BCZYRK.js';
|
|
3
|
+
import Container from '@mui/material/Container';
|
|
4
|
+
import Card from '@mui/material/Card';
|
|
5
|
+
import Grid2 from '@mui/material/Grid';
|
|
6
|
+
import { useEffect, useState } from 'react';
|
|
7
|
+
import Box from '@mui/material/Box';
|
|
8
|
+
import { alertService, Alerts, Textbox, PasswordTextbox, CheckBox, LinkButton, Button, setLocalStorage, planAuth, auth, postcall, configService } from 'sspart-fe-lib';
|
|
9
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
10
|
+
import Typography from '@mui/material/Typography';
|
|
11
|
+
|
|
12
|
+
var FooterLinks = ({ navigate, link1, title1, link2, title2 }) => {
|
|
13
|
+
const onClick = (name) => {
|
|
14
|
+
if (name) navigate(`${name}`);
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ jsxs(Grid2, { container: true, justifyContent: "space-between", alignItems: "center", children: [
|
|
17
|
+
/* @__PURE__ */ jsx(Grid2, { children: /* @__PURE__ */ jsx(LinkButton, { className: "small-btn-link-p", name: link1, text: title1, onClick }) }),
|
|
18
|
+
/* @__PURE__ */ jsx(Grid2, { children: /* @__PURE__ */ jsx(LinkButton, { className: "small-btn-link-p", name: link2, text: title2, onClick }) })
|
|
19
|
+
] });
|
|
20
|
+
};
|
|
21
|
+
var footer_links_default = FooterLinks;
|
|
22
|
+
var LoginImage = ({ image, title }) => {
|
|
23
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
24
|
+
/* @__PURE__ */ jsx(Grid2, { mt: 1, children: /* @__PURE__ */ jsx(Grid2, { children: /* @__PURE__ */ jsx("img", { className: "sign-in-logo", alt: "...", src: image }) }) }),
|
|
25
|
+
/* @__PURE__ */ jsx(Grid2, { mt: 1, children: /* @__PURE__ */ jsx(Grid2, { textAlign: "center", children: /* @__PURE__ */ jsx(Typography, { variant: "h6", color: "var(--primary-color)", children: title }) }) })
|
|
26
|
+
] });
|
|
27
|
+
};
|
|
28
|
+
var login_image_default = LoginImage;
|
|
29
|
+
var ROUTE_MAP = {
|
|
30
|
+
signin: { service: "user", path: "/user/signin" }
|
|
31
|
+
};
|
|
32
|
+
function CUSTOMER_ROUTES(routeKey) {
|
|
33
|
+
const config = configService.getData();
|
|
34
|
+
const HOST_MAP = {
|
|
35
|
+
user: config.API_USER_API_HOST,
|
|
36
|
+
trade: config.API_TRADE_API_HOST
|
|
37
|
+
};
|
|
38
|
+
const route = ROUTE_MAP[routeKey];
|
|
39
|
+
const host = HOST_MAP[route.service];
|
|
40
|
+
return `${host}${route.path}`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/components/signin.page/api-calls.tsx
|
|
44
|
+
var login = async (username, password, tandc, rememberme) => {
|
|
45
|
+
return await postcall(CUSTOMER_ROUTES("signin"), { username, password, tandc, rememberme }, "sign-in");
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/resources/status.tsx
|
|
49
|
+
var STATUS_CODE_MESSAGES = {
|
|
50
|
+
PLEASE_ENTER_USERNAME: "Please provide a valid Username",
|
|
51
|
+
PLEASE_ENTER_PASSWORD: "Please provide a valid Password"
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// src/components/signin.page/business-rules.tsx
|
|
55
|
+
var validateLoginForm = (data) => {
|
|
56
|
+
const errors = {};
|
|
57
|
+
if (!data.username) {
|
|
58
|
+
errors["username"] = STATUS_CODE_MESSAGES.PLEASE_ENTER_USERNAME;
|
|
59
|
+
}
|
|
60
|
+
if (!data.password) {
|
|
61
|
+
errors["password"] = STATUS_CODE_MESSAGES.PLEASE_ENTER_PASSWORD;
|
|
62
|
+
}
|
|
63
|
+
alertService.setData(errors);
|
|
64
|
+
return Object.keys(errors).length === 0;
|
|
65
|
+
};
|
|
66
|
+
var SignIn = ({ navigate }) => {
|
|
67
|
+
const [validationErrors, setValidationErrors] = useState({});
|
|
68
|
+
const [formData, setFormData] = useState({
|
|
69
|
+
username: "",
|
|
70
|
+
password: "",
|
|
71
|
+
tandc: false,
|
|
72
|
+
rememberme: false
|
|
73
|
+
});
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
return () => {
|
|
76
|
+
alertService.resetData();
|
|
77
|
+
};
|
|
78
|
+
}, []);
|
|
79
|
+
const handleChange = (name, value) => {
|
|
80
|
+
setFormData({ ...formData, [name]: value });
|
|
81
|
+
};
|
|
82
|
+
const handleSubmit = async (e) => {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
if (validateLoginForm(formData)) {
|
|
85
|
+
alertService.resetData();
|
|
86
|
+
const { username, password, tandc, rememberme } = formData;
|
|
87
|
+
const result = await login(username, password, tandc, rememberme);
|
|
88
|
+
if (result && result.username) {
|
|
89
|
+
const { username: username2, fullname, permissions } = result;
|
|
90
|
+
setLocalStorage("username", username2);
|
|
91
|
+
setLocalStorage("fullname", fullname);
|
|
92
|
+
planAuth.setData({ username: username2, fullname, permissions });
|
|
93
|
+
auth.authenticate(() => navigate("/dashboard"));
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
setValidationErrors(alertService.getData());
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const onClick = (name) => {
|
|
100
|
+
if (name) navigate(`/${name}`);
|
|
101
|
+
};
|
|
102
|
+
return /* @__PURE__ */ jsxs(Grid2, { container: true, direction: "column", alignItems: "center", justifyContent: "center", children: [
|
|
103
|
+
/* @__PURE__ */ jsx(login_image_default, { image: IMAGE_LINKS.NAMELOGO, title: "Sign in" }),
|
|
104
|
+
/* @__PURE__ */ jsxs(Box, { component: "form", onSubmit: handleSubmit, noValidate: true, sx: { m: 0, width: "100%" }, children: [
|
|
105
|
+
/* @__PURE__ */ jsx(Alerts, { id: "sign-in", className: "mt-2 mb-4" }),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
Textbox,
|
|
108
|
+
{
|
|
109
|
+
id: "username",
|
|
110
|
+
name: "username",
|
|
111
|
+
type: "text",
|
|
112
|
+
placeholder: "Username",
|
|
113
|
+
size: "medium",
|
|
114
|
+
validation: validationErrors.username,
|
|
115
|
+
value: formData.username,
|
|
116
|
+
onChange: handleChange,
|
|
117
|
+
mandate: true
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
/* @__PURE__ */ jsx(Box, { sx: { mb: 2 } }),
|
|
121
|
+
/* @__PURE__ */ jsx(
|
|
122
|
+
PasswordTextbox,
|
|
123
|
+
{
|
|
124
|
+
id: "password",
|
|
125
|
+
name: "password",
|
|
126
|
+
placeholder: "Password",
|
|
127
|
+
size: "medium",
|
|
128
|
+
validation: validationErrors.password,
|
|
129
|
+
value: formData.password,
|
|
130
|
+
onChange: handleChange,
|
|
131
|
+
mandate: true
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ jsx(Box, { sx: { mb: 2 } }),
|
|
135
|
+
/* @__PURE__ */ jsx(
|
|
136
|
+
CheckBox,
|
|
137
|
+
{
|
|
138
|
+
name: "rememberme",
|
|
139
|
+
label: "Remember me",
|
|
140
|
+
value: formData.rememberme,
|
|
141
|
+
onChange: handleChange
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
/* @__PURE__ */ jsx(
|
|
145
|
+
CheckBox,
|
|
146
|
+
{
|
|
147
|
+
name: "tandc",
|
|
148
|
+
value: formData.tandc,
|
|
149
|
+
validation: validationErrors.tandc,
|
|
150
|
+
label: /* @__PURE__ */ jsxs("span", { children: [
|
|
151
|
+
"I agree to DheQuest's ",
|
|
152
|
+
/* @__PURE__ */ jsx(LinkButton, { name: "terms", text: "Terms & Conditions", onClick })
|
|
153
|
+
] }),
|
|
154
|
+
onChange: handleChange
|
|
155
|
+
}
|
|
156
|
+
),
|
|
157
|
+
/* @__PURE__ */ jsx(Box, { sx: { mb: 2 } }),
|
|
158
|
+
/* @__PURE__ */ jsx(Button, { text: "Sign In", type: "submit" }),
|
|
159
|
+
/* @__PURE__ */ jsx(Box, { sx: { mb: 2 } }),
|
|
160
|
+
/* @__PURE__ */ jsx(
|
|
161
|
+
footer_links_default,
|
|
162
|
+
{
|
|
163
|
+
navigate,
|
|
164
|
+
link1: "/user/forget-password",
|
|
165
|
+
title1: "Forgot password?",
|
|
166
|
+
link2: "/signup",
|
|
167
|
+
title2: "Don't have an account? Sign Up"
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
] })
|
|
171
|
+
] });
|
|
172
|
+
};
|
|
173
|
+
var sign_in_default = SignIn;
|
|
174
|
+
var SigninPage = ({ navigate }) => {
|
|
175
|
+
useEffect(() => {
|
|
176
|
+
document.title = TITLES.SIGN_IN_PAGE_TITLE;
|
|
177
|
+
}, []);
|
|
178
|
+
return /* @__PURE__ */ jsx(Grid2, { container: true, spacing: 0, direction: "row", alignItems: "center", justifyContent: "center", className: "full-hw-window", children: /* @__PURE__ */ jsx(Container, { component: "main", maxWidth: "xs", children: /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx("div", { className: "sign-in-card-wrapper modal-body", children: /* @__PURE__ */ jsx(sign_in_default, { navigate }) }) }) }) });
|
|
179
|
+
};
|
|
180
|
+
var signin_page_default = SigninPage;
|
|
181
|
+
|
|
182
|
+
export { signin_page_default as default };
|
|
183
|
+
//# sourceMappingURL=signin.page.js.map
|
|
184
|
+
//# sourceMappingURL=signin.page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/signin.page/footer-links.tsx","../../src/components/common/login-image.tsx","../../src/resources/routes.tsx","../../src/components/signin.page/api-calls.tsx","../../src/resources/status.tsx","../../src/components/signin.page/business-rules.tsx","../../src/components/signin.page/sign-in.tsx","../../src/pages/signin.page.tsx"],"names":["Grid","jsxs","jsx","alertService","username","LinkButton","useEffect"],"mappings":"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","file":"signin.page.js","sourcesContent":["import Grid from '@mui/material/Grid';\nimport { useNavigate } from 'react-router-dom';\nimport { LinkButton } from \"sspart-fe-lib\";\n\ninterface FooterLinksProps {\n navigate: ReturnType<typeof useNavigate>;\n link1: string;\n title1: string;\n link2: string;\n title2: string;\n}\n\nconst FooterLinks: React.FC<FooterLinksProps> = ({ navigate, link1, title1, link2, title2 }) => {\n \n const onClick = (name?: string) => {\n if (name) navigate(`${name}`);\n };\n\n return (\n <Grid container justifyContent=\"space-between\" alignItems=\"center\">\n <Grid>\n <LinkButton className=\"small-btn-link-p\" name={link1} text={title1} onClick={onClick}/>\n </Grid>\n <Grid>\n <LinkButton className=\"small-btn-link-p\" name={link2} text={title2} onClick={onClick}/>\n </Grid>\n </Grid>\n );\n};\n\nexport default FooterLinks;\n","import Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\n\ninterface LoginImageProps {\n image: string;\n title: string;\n}\n\nconst LoginImage: React.FC<LoginImageProps> = ({ image, title }) => {\n\n return (\n <div >\n <Grid mt={1}>\n <Grid>\n <img className=\"sign-in-logo\" alt=\"...\" src={image}></img>\n </Grid>\n </Grid>\n <Grid mt={1}>\n <Grid textAlign=\"center\">\n <Typography variant=\"h6\" color=\"var(--primary-color)\">\n {title}\n </Typography>\n </Grid>\n </Grid>\n </div>\n );\n \n}\n\nexport default LoginImage;","import { configService } from \"sspart-fe-lib\";\n\nconst ROUTE_MAP = {\n signin: { service: \"user\", path: \"/user/signin\" },\n} as const;\n\nexport type CustomerRouteKey = keyof typeof ROUTE_MAP;\n\nexport function CUSTOMER_ROUTES(routeKey: CustomerRouteKey): string {\n const config = configService.getData();\n\n const HOST_MAP = {\n user: config.API_USER_API_HOST,\n trade: config.API_TRADE_API_HOST,\n } as const;\n\n const route = ROUTE_MAP[routeKey];\n const host = HOST_MAP[route.service];\n\n return `${host}${route.path}`;\n}\n","import { postcall } from \"sspart-fe-lib\";\nimport { CUSTOMER_ROUTES } from \"../../resources/routes\";\n\nexport const login = async (username: string, password: string, tandc: boolean, rememberme: boolean) => {\n return await postcall(CUSTOMER_ROUTES(\"signin\"), { username, password, tandc, rememberme }, \"sign-in\");\n};","export const STATUS_CODE_MESSAGES = {\n PLEASE_ENTER_USERNAME: \"Please provide a valid Username\",\n PLEASE_ENTER_PASSWORD: \"Please provide a valid Password\",\n}","import { alertService } from 'sspart-fe-lib';\nimport { STATUS_CODE_MESSAGES } from '../../resources/status';\n\nexport const validateLoginForm = (data: any) => {\n const errors: Record<string, string> = {};\n\n if (!data.username) {\n errors[\"username\"] = STATUS_CODE_MESSAGES.PLEASE_ENTER_USERNAME;\n }\n\n if (!data.password) {\n errors[\"password\"] = STATUS_CODE_MESSAGES.PLEASE_ENTER_PASSWORD;\n }\n\n alertService.setData(errors);\n\n return Object.keys(errors).length === 0;\n};\n","import { useState, useEffect } from \"react\";\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport FooterLinks from \"./footer-links\";\nimport LoginImage from \"../common/login-image\";\nimport { login } from \"./api-calls\";\nimport { validateLoginForm } from \"./business-rules\";\nimport { alertService, auth, planAuth, setLocalStorage, Alerts,\n Button, PasswordTextbox, Textbox, CheckBox, LinkButton\n } from \"sspart-fe-lib\";\nimport { IMAGE_LINKS } from \"../../resources/images\";\nimport { useNavigate } from \"react-router-dom\";\n\ninterface SignInProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst SignIn: React.FC<SignInProps> = ({ navigate }) => {\n\n const [validationErrors, setValidationErrors] = useState<Record<string, string>>({});\n const [formData, setFormData] = useState({\n username: \"\",\n password: \"\",\n tandc: false,\n rememberme: false,\n });\n\n useEffect(() => {\n return () => {\n alertService.resetData();\n };\n }, []);\n\n const handleChange = (name: string, value: any) => {\n setFormData({ ...formData, [name]: value });\n };\n\n const handleSubmit = async (e: any) => {\n e.preventDefault();\n if (validateLoginForm(formData)) {\n alertService.resetData();\n const { username, password, tandc, rememberme } = formData;\n const result = await login(username, password, tandc, rememberme);\n if (result && result.username) {\n const { username, fullname, permissions } = result;\n setLocalStorage(\"username\", username);\n setLocalStorage(\"fullname\", fullname);\n planAuth.setData({ username, fullname, permissions });\n auth.authenticate(() => navigate('/dashboard'));\n }\n } else {\n setValidationErrors(alertService.getData());\n }\n };\n\n const onClick = (name?: string) => {\n if (name) navigate(`/${name}`);\n };\n\n return (\n <Grid container direction=\"column\" alignItems=\"center\" justifyContent=\"center\">\n <LoginImage image={IMAGE_LINKS.NAMELOGO} title=\"Sign in\" />\n <Box component=\"form\" onSubmit={handleSubmit} noValidate sx={{ m: 0, width: \"100%\" }}>\n <Alerts id=\"sign-in\" className=\"mt-2 mb-4\"/>\n <Textbox id=\"username\" name=\"username\" type=\"text\" placeholder=\"Username\" size=\"medium\"\n validation={validationErrors.username} value={formData.username}\n onChange={handleChange} mandate={true} />\n <Box sx={{ mb: 2 }}/>\n <PasswordTextbox id=\"password\" name=\"password\" placeholder=\"Password\" size=\"medium\"\n validation={validationErrors.password} value={formData.password}\n onChange={handleChange} mandate={true} />\n <Box sx={{ mb: 2 }}/>\n <CheckBox name=\"rememberme\" label=\"Remember me\" value={formData.rememberme}\n onChange={handleChange} />\n <CheckBox name=\"tandc\" value={formData.tandc} validation={validationErrors.tandc}\n label={<span>I agree to DheQuest's <LinkButton name=\"terms\" text=\"Terms & Conditions\" onClick={onClick}/></span>}\n onChange={handleChange} />\n <Box sx={{ mb: 2 }}/>\n <Button text=\"Sign In\" type=\"submit\"/>\n <Box sx={{ mb: 2 }}/>\n <FooterLinks navigate={navigate} \n link1=\"/user/forget-password\" title1=\"Forgot password?\"\n link2=\"/signup\" title2=\"Don't have an account? Sign Up\" />\n </Box>\n </Grid>\n );\n};\n\nexport default SignIn;","import '../components/css/sign-in.page.css';\nimport Container from '@mui/material/Container';\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\nimport { useEffect } from \"react\";\nimport SignIn from '../components/signin.page/sign-in';\nimport { TITLES } from '../resources/constants';\nimport { useNavigate } from 'react-router-dom';\n\ninterface SigninPageProps {\n navigate: ReturnType<typeof useNavigate>;\n}\n\nconst SigninPage: React.FC<SigninPageProps> = ({ navigate }) => {\n\n\tuseEffect(() => {\n\t\tdocument.title = TITLES.SIGN_IN_PAGE_TITLE;\n\t}, []);\n\n\treturn (\n\t\t<Grid container spacing={0} direction=\"row\" alignItems=\"center\" justifyContent=\"center\" className='full-hw-window'>\n\t\t\t<Container component=\"main\" maxWidth=\"xs\">\n\t\t\t\t<Card >\n\t\t\t\t\t<div className=\"sign-in-card-wrapper modal-body\">\n\t\t\t\t\t\t<SignIn navigate={navigate}/>\n\t\t\t\t\t</div>\n\t\t\t\t</Card>\n\t\t\t</Container>\n\t\t</Grid>\n\t);\n}\n\nexport default SigninPage;"]}
|