├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json └── robots.txt └── src ├── App.css ├── App.js ├── App.test.js ├── components ├── AppFooter.js ├── AppHeader.js ├── AppMenuDrawer.js ├── AppMenuIcon.js ├── AppMenuItem.js ├── BaseCss.js ├── ChatBubble.js ├── ChatWithUs.js ├── ToggleColorMode.js └── pages │ ├── GetInTouch.js │ ├── JoinCommunity.js │ ├── ScrollTop.js │ ├── about │ ├── AboutIntroduction.js │ ├── AboutMain.js │ ├── AboutOurMission.js │ ├── AboutOurValues.js │ ├── AboutUs.js │ └── AboutVideo.js │ ├── blog │ ├── BlogInner.js │ └── BlogMain.js │ ├── careers │ ├── CareersIntro.js │ ├── CareersJoinOurTeam.js │ ├── CareersJoinOurTeamDetail.js │ ├── CareersJoinOurTeamInfo.js │ ├── CareersJoinSolicy.js │ └── CareersMain.js │ ├── contact │ └── Contact.js │ ├── home │ ├── HomeAchievements.js │ ├── HomeIntroduction.js │ ├── HomeJoinCommunity.js │ ├── HomeMain.js │ ├── HomeOurServices.js │ ├── HomeSeeAbout.js │ ├── HomeTechStack.js │ └── HomeTechStackOurClient.js │ ├── other │ ├── PrivacyPolicy.js │ └── TermsAndConditions.js │ ├── portfolio │ ├── PortfolioIntro.js │ ├── PortfolioMain.js │ └── PortfolioOurWorks.js │ └── services │ ├── BlockchainIntro.js │ ├── BlockchainMain.js │ ├── BlockchainOurServices.js │ ├── BlockchainTechStack.js │ ├── SoftwareIntro.js │ ├── SoftwareMain.js │ ├── SoftwareOurServices.js │ └── SoftwareTechStack.js ├── css ├── app.css ├── appFooter.css ├── card.css ├── cookies.css ├── joinCommunity.css ├── notification.css ├── schedule.css ├── subTitleText.css └── techCard.css ├── fonts ├── Inter-Black.ttf ├── Inter-Bold.ttf ├── Inter-ExtraBold.ttf ├── Inter-ExtraLight.ttf ├── Inter-Light.ttf ├── Inter-Medium.ttf ├── Inter-Regular.ttf ├── Inter-SemiBold.ttf ├── Inter-Thin.ttf ├── Quicksand-Bold.ttf ├── Quicksand-Light.ttf ├── Quicksand-Medium.ttf ├── Quicksand-Regular.ttf └── Quicksand-SemiBold.ttf ├── images ├── Youtube-logo-dark.svg └── Youtube-logo.svg ├── index.css ├── index.js ├── logo.svg ├── reportWebVitals.js └── setupTests.js /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `npm start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in your browser. 13 | 14 | The page will reload when you make changes.\ 15 | You may also see any lint errors in the console. 16 | 17 | ### `npm test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `npm run build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `npm run eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can't go back!** 35 | 36 | If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. 39 | 40 | You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | 48 | ### Code Splitting 49 | 50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) 51 | 52 | ### Analyzing the Bundle Size 53 | 54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) 55 | 56 | ### Making a Progressive Web App 57 | 58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) 59 | 60 | ### Advanced Configuration 61 | 62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) 63 | 64 | ### Deployment 65 | 66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) 67 | 68 | ### `npm run build` fails to minify 69 | 70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) 71 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solicy", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@emotion/react": "^11.11.4", 7 | "@emotion/styled": "^11.11.0", 8 | "@fingerprintjs/fingerprintjs": "^4.2.2", 9 | "@mui/icons-material": "^5.15.14", 10 | "@mui/material": "^5.15.14", 11 | "@mui/styled-engine-sc": "^6.0.0-alpha.18", 12 | "@testing-library/jest-dom": "^5.17.0", 13 | "@testing-library/react": "^13.4.0", 14 | "@testing-library/user-event": "^13.5.0", 15 | "axios": "^1.6.8", 16 | "fingerprintjs": "^0.5.3", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "react-router-dom": "^6.22.3", 20 | "react-router-hash-link": "^2.4.3", 21 | "react-scripts": "5.0.1", 22 | "styled-components": "^6.1.8", 23 | "web-vitals": "^2.1.4" 24 | }, 25 | "scripts": { 26 | "start": "react-scripts start", 27 | "build": "react-scripts build", 28 | "test": "react-scripts test", 29 | "eject": "react-scripts eject" 30 | }, 31 | "eslintConfig": { 32 | "extends": [ 33 | "react-app", 34 | "react-app/jest" 35 | ] 36 | }, 37 | "browserslist": { 38 | "production": [ 39 | ">0.2%", 40 | "not dead", 41 | "not op_mini all" 42 | ], 43 | "development": [ 44 | "last 1 chrome version", 45 | "last 1 firefox version", 46 | "last 1 safari version" 47 | ] 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/public/logo512.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | pointer-events: none; 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .App-logo { 12 | animation: App-logo-spin infinite 20s linear; 13 | } 14 | } 15 | 16 | .App-header { 17 | background-color: #282c34; 18 | min-height: 100vh; 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | font-size: calc(10px + 2vmin); 24 | color: white; 25 | } 26 | 27 | .App-link { 28 | color: #61dafb; 29 | } 30 | 31 | @keyframes App-logo-spin { 32 | from { 33 | transform: rotate(0deg); 34 | } 35 | to { 36 | transform: rotate(360deg); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import './App.css' 2 | import AppAppBar from './components/AppHeader' 3 | import AppFooterBar from './components/AppFooter' 4 | import { useState } from 'react' 5 | import { BrowserRouter as Router, Route, Routes } from 'react-router-dom' 6 | import Home from './components/pages/home/HomeMain' 7 | import About from './components/pages/about/AboutMain' 8 | import BlockChain from './components/pages/services/BlockchainMain' 9 | import Software from './components/pages/services/SoftwareMain' 10 | import Portfolio from './components/pages/portfolio/PortfolioMain' 11 | import Careers from './components/pages/careers/CareersMain' 12 | import CareersJoinOurTeamDetail from './components/pages/careers/CareersJoinOurTeamDetail' 13 | import Blog from './components/pages/blog/BlogMain' 14 | import Contact from './components/pages/contact/Contact' 15 | import ScrollTop from './components/pages/ScrollTop' 16 | import TermsAndConditions from './components/pages/other/TermsAndConditions' 17 | import PrivacyPolicy from './components/pages/other/PrivacyPolicy' 18 | import { ThemeProvider, createTheme } from '@mui/material/styles' 19 | 20 | function App () { 21 | const [mode, setMode] = useState('light') 22 | 23 | const toggleColorMode = () => { 24 | let next 25 | setMode(prev => { 26 | next = prev === 'dark' ? 'light' : 'dark' 27 | return next 28 | }) 29 | 30 | document.documentElement.setAttribute('data-theme', next) 31 | } 32 | 33 | return ( 34 | 35 | 36 | 37 | 38 | 39 | } /> 40 | } /> 41 | } /> 42 | } /> 43 | } /> 44 | } /> 45 | } 48 | /> 49 | } 52 | /> 53 | } 56 | /> 57 | } 60 | /> 61 | } /> 62 | } /> 63 | } /> 64 | } /> 65 | 66 | 67 | 68 | 69 | ) 70 | } 71 | 72 | export default App 73 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /src/components/AppHeader.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | import PropTypes from 'prop-types' 3 | import { useNavigate } from 'react-router-dom' 4 | import { useState, useEffect } from 'react' 5 | import { useLocation } from 'react-router-dom' 6 | 7 | import Box from '@mui/material/Box' 8 | import AppBar from '@mui/material/AppBar' 9 | import Container from '@mui/material/Container' 10 | import ToggleColorMode from './ToggleColorMode' 11 | import AppMenuItem from './AppMenuItem' 12 | import AppMenuDrawer from './AppMenuDrawer' 13 | import AppMenuIcon from './AppMenuIcon' 14 | import ChatWithUs from './ChatWithUs' 15 | 16 | const logoStyle = { 17 | width: '150px', 18 | height: '43px', 19 | cursor: 'pointer' 20 | } 21 | 22 | const appBarContainerStyle = { 23 | maxWidth: '100%', 24 | paddingLeft: 20, 25 | paddingRight: 20, 26 | display: 'flex', 27 | alignItems: 'center', 28 | flexShrink: 0, 29 | marginLeft: 0, 30 | marginRight: 0, 31 | justifyContent: 'center' 32 | } 33 | 34 | const appBarItems = [ 35 | { 36 | name: 'Home', 37 | target: '/' 38 | }, 39 | { 40 | name: 'About', 41 | target: '/about' 42 | }, 43 | { 44 | name: 'Services', 45 | target: '/services', 46 | children: [ 47 | { 48 | name: 'Blockchain', 49 | target: '/blockchain' 50 | }, 51 | { 52 | name: 'Software', 53 | target: '/software' 54 | } 55 | ] 56 | }, 57 | { 58 | name: 'Portfolio', 59 | target: '/portfolio' 60 | }, 61 | { 62 | name: 'Careers', 63 | target: '/career' 64 | }, 65 | { 66 | name: 'Blog', 67 | target: '/blog' 68 | }, 69 | { 70 | name: 'Contact', 71 | target: '/contact' 72 | } 73 | ] 74 | 75 | function AppAppBar ({ mode, toggleColorMode }) { 76 | const [open, setOpen] = useState(false) 77 | const [selMenu, setSelMenu] = useState(0) 78 | const navigate = useNavigate() 79 | 80 | const appBarStyle = { 81 | background: 82 | mode === 'light' 83 | ? 'linear-gradient(90deg,#1049b3 0.08%,#2268eb 100.59%)' 84 | : 'linear-gradient(89.92deg,#132d5f -0.61%,#183874 99.93%)', 85 | padding: '25px 0 18px', 86 | boxShadow: 'none' 87 | } 88 | 89 | const { pathname, hash } = useLocation() 90 | 91 | useEffect(() => { 92 | const currentPath = pathname 93 | 94 | const index = appBarItems.findIndex(item => { 95 | if (item.target === currentPath.toLowerCase()) return true 96 | if (item.children !== undefined) 97 | return ( 98 | item.children.findIndex( 99 | child => child.target === currentPath.toLowerCase() 100 | ) !== -1 101 | ) 102 | return false 103 | }) 104 | 105 | setSelMenu(index) 106 | }, [pathname, hash]) 107 | 108 | const onMenuClicked = index => { 109 | setSelMenu(index) 110 | } 111 | const toggleDrawer = () => { 112 | setOpen(!open) 113 | } 114 | 115 | useEffect(() => { 116 | const handleResize = () => { 117 | setOpen(false) 118 | } 119 | 120 | window.addEventListener('resize', handleResize) 121 | 122 | return () => { 123 | window.removeEventListener('resize', handleResize) 124 | } 125 | }, []) 126 | 127 | /* const scrollToSection = (sectionId) => { 128 | const sectionElement = document.getElementById(sectionId); 129 | const offset = 128; 130 | if (sectionElement) { 131 | const targetScroll = sectionElement.offsetTop - offset; 132 | sectionElement.scrollIntoView({ behavior: 'smooth' }); 133 | window.scrollTo({ 134 | top: targetScroll, 135 | behavior: 'smooth', 136 | }); 137 | setOpen(false); 138 | } 139 | }; */ 140 | 141 | return ( 142 |
143 | 144 | 145 | 160 | 161 | logo of sitemark navigate('/')} 168 | /> 169 | 170 | 174 | 206 | 207 | 208 | 209 | 210 | 211 | 215 |
toggleDrawer()}> 216 | 217 |
218 |
219 |
220 | setOpen(false)} 223 | handleSelMenu={setSelMenu} 224 | /> 225 | 226 | 227 |
228 |
229 |
230 | ) 231 | } 232 | 233 | AppAppBar.propTypes = { 234 | mode: PropTypes.oneOf(['dark', 'light']).isRequired, 235 | toggleColorMode: PropTypes.func.isRequired 236 | } 237 | 238 | export default AppAppBar 239 | -------------------------------------------------------------------------------- /src/components/AppMenuDrawer.js: -------------------------------------------------------------------------------- 1 | import { useNavigate } from 'react-router-dom' 2 | import { useEffect, useRef } from 'react' 3 | 4 | const spanStyle = { 5 | boxSizing: 'border-box', 6 | display: 'block', 7 | width: 'initial', 8 | height: 'initial', 9 | background: 'none', 10 | opacity: '1', 11 | border: '0', 12 | margin: '0', 13 | padding: '0', 14 | maxWidth: '100%' 15 | } 16 | 17 | function AppMenuDrawer (props) { 18 | const navigate = useNavigate() 19 | const containerRef = useRef() 20 | 21 | useEffect(() => { 22 | const handlePoint = event => { 23 | const rect = containerRef.current.getBoundingClientRect() 24 | const x = event.clientX 25 | const y = event.clientY 26 | // Handle the click event here 27 | if ( 28 | props.open && 29 | containerRef.current && 30 | x >= rect.left && 31 | x <= rect.right && 32 | y >= rect.top && 33 | y <= rect.bottom 34 | ) { 35 | props.handleClose() 36 | } 37 | } 38 | 39 | window.addEventListener('click', handlePoint) 40 | return () => { 41 | window.removeEventListener('click', handlePoint) 42 | } 43 | }, [props]) 44 | 45 | const handleClick = (target, index) => { 46 | navigate(target) 47 | props.handleClose() 48 | props.handleSelMenu(index) 49 | } 50 | 51 | return ( 52 |
56 |
57 | handleClick('/', 0)}> 58 | Home 59 | 60 | handleClick('/about', 1)}> 61 | About 62 | 63 | 64 |
65 | 66 | Services 67 | 83 | 84 | 97 | 98 | header-arrow.svg 124 | 125 | 126 | 141 |
142 |
143 | handleClick('/portfolio', 3)} 146 | > 147 | Portfolio 148 | 149 | handleClick('/career', 4)}> 150 | Careers 151 | 152 | handleClick('/blog', 5)}> 153 | Blog 154 | 155 | handleClick('/contact', 6)}> 156 | Contact 157 | 158 |
159 |
160 |
161 | ) 162 | } 163 | 164 | export default AppMenuDrawer 165 | -------------------------------------------------------------------------------- /src/components/AppMenuIcon.js: -------------------------------------------------------------------------------- 1 | function AppMenuItem (props) { 2 | return ( 3 |
9 | 25 | 39 | 54 | 55 | menu.svg 81 | 111 | 112 |
113 | ) 114 | } 115 | 116 | export default AppMenuItem 117 | -------------------------------------------------------------------------------- /src/components/AppMenuItem.js: -------------------------------------------------------------------------------- 1 | import { useState } from 'react' 2 | import { useNavigate } from 'react-router-dom' 3 | // import { Link } from "react-router-dom"; 4 | 5 | const menuItemStyle = { 6 | fontWeight: 600, 7 | position: 'relative', 8 | transition: 'all .3s', 9 | fontStyle: 'normal', 10 | fontSize: 16, 11 | lineHeight: '40px', 12 | letterSpacing: '.115em', 13 | color: 'white', 14 | paddingBottom: '10px', 15 | cursor: 'pointer' 16 | } 17 | 18 | const afterItemStyle = { 19 | content: '.', 20 | position: 'absolute', 21 | right: 0, 22 | bottom: 0, 23 | left: 0, 24 | height: '2px', 25 | background: 'white', 26 | transition: 'all .3s', 27 | margin: 'auto', 28 | width: '100%', 29 | color: 'transparent', 30 | visibility: 'visible', 31 | opacity: 1 32 | } 33 | 34 | const dropMenuStyle = { 35 | width: '215px', 36 | marginTop: '10px', 37 | position: 'absolute', 38 | backgroundColor: 'white', 39 | color: '#131313', 40 | minWidth: '160px', 41 | boxShadow: '0 8px 16px 0 rgba(0,0,0,0.2)', 42 | zIndex: 1, 43 | borderRadius: '10px', 44 | overflow: 'hidden' 45 | } 46 | 47 | function AppMenuDropItem (props) { 48 | const [hover, setHover] = useState(false) 49 | const default_style = { 50 | padding: '13px 28px', 51 | display: 'block', 52 | borderBottom: '1px solid #d9d9d9', 53 | color: '#131313' 54 | } 55 | const new_style = hover 56 | ? { ...default_style, backgroundColor: '#ebebeb' } 57 | : default_style 58 | 59 | const navigate = useNavigate() 60 | 61 | return ( 62 | { 64 | setHover(true) 65 | }} 66 | onMouseLeave={() => { 67 | setHover(false) 68 | }} 69 | onClick={() => { 70 | navigate(props.item.target) 71 | props.handleClick() 72 | }} 73 | style={new_style} 74 | > 75 | {props.children} 76 | 77 | ) 78 | } 79 | 80 | function AppMenuItem (props) { 81 | const [hovered, setHovered] = useState(false) 82 | const [dropDownHovered, setDropDownHovered] = useState(false) 83 | 84 | const highlight = props.isSelected || hovered 85 | const menuStyle = props.isSelected 86 | ? { ...menuItemStyle, fontWeight: 700 } 87 | : menuItemStyle 88 | const afterStyle = highlight 89 | ? afterItemStyle 90 | : { ...afterItemStyle, opacity: 0, visibility: 'hidden', width: 0 } 91 | const hasChildren = props.item.children !== undefined 92 | const dropDown = hovered && hasChildren 93 | const dropDownMenuStyle = 94 | dropDown || dropDownHovered 95 | ? dropMenuStyle 96 | : { ...dropMenuStyle, display: 'none' } 97 | const navigate = useNavigate() 98 | 99 | return ( 100 |
  • setHovered(true)} 103 | onMouseLeave={() => setHovered(false)} 104 | > 105 | 106 |
    { 108 | if (!hasChildren) { 109 | props.clickFn(props.menuIndex) 110 | navigate(props.item.target) 111 | } 112 | }} 113 | > 114 | {props.children} 115 | {hasChildren && ( 116 | header-arrow.svg 122 | )} 123 |
    124 |
    125 |
    setDropDownHovered(true)} 127 | onMouseLeave={() => setDropDownHovered(false)} 128 | > 129 |
    130 | {hasChildren && 131 | props.item.children.map(item => ( 132 | props.clickFn(props.menuIndex)} 136 | > 137 | {item.name} 138 | 139 | ))} 140 |
    141 |
    142 |
    143 |
  • 144 | ) 145 | } 146 | 147 | export default AppMenuItem 148 | -------------------------------------------------------------------------------- /src/components/BaseCss.js: -------------------------------------------------------------------------------- 1 | // import { ImageDivSpanStyle1, ImageDivSpanStyle2, ImageDivSpanSpanStyle1, ImageDivSpanSpanImgStyle1, ImageDivSpanSpanImgStyle2, ImageDivSpanImgStyle1, ImageDivSpanImgStyle2, ImageDivSpanImgStyle3} from '../../BaseCss' 2 | 3 | export const ImageDivSpanStyle1 = { 4 | boxSizing: 'border-box', 5 | display: 'inline-block', 6 | overflow: 'hidden', 7 | width: 'initial', 8 | height: 'initial', 9 | background: 'none', 10 | opacity: 1, 11 | border: 0, 12 | margin: 0, 13 | padding: 0, 14 | position: 'relative', 15 | maxWidth: '100%' 16 | } 17 | 18 | export const ImageDivSpanStyle2 = { 19 | boxSizing: 'border-box', 20 | display: 'block', 21 | overflow: 'hidden', 22 | width: 'initial', 23 | height: 'initial', 24 | background: 'none', 25 | opacity: 1, 26 | border: 0, 27 | margin: 0, 28 | padding: 0, 29 | position: 'absolute', 30 | inset: '0px' 31 | } 32 | 33 | export const ImageDivSpanSpanStyle1 = { 34 | boxSizing: 'border-box', 35 | display: 'block', 36 | width: 'initial', 37 | height: 'initial', 38 | background: 'none', 39 | opacity: 1, 40 | border: 0, 41 | margin: 0, 42 | padding: 0, 43 | maxWidth: '100%' 44 | } 45 | 46 | export const ImageDivSpanSpanImgStyle1 = { 47 | display: 'block', 48 | maxWidth: '100%', 49 | width: 'initial', 50 | height: 'initial', 51 | background: 'none', 52 | opacity: 1, 53 | border: 0, 54 | margin: 0, 55 | padding: 0 56 | } 57 | 58 | export const ImageDivSpanSpanImgStyle2 = { 59 | display: 'block', 60 | maxWidth: '100%', 61 | width: 'initial', 62 | height: 'initial', 63 | background: 'none', 64 | opacity: 1, 65 | border: 0, 66 | margin: 0, 67 | padding: 0, 68 | visibility: 'visible' 69 | } 70 | 71 | export const ImageDivSpanImgStyle1 = { 72 | position: 'absolute', 73 | top: 0, 74 | left: 0, 75 | bottom: 0, 76 | right: 0, 77 | boxSizing: 'border-box', 78 | padding: 0, 79 | border: 'none', 80 | margin: 'auto', 81 | display: 'block', 82 | width: 0, 83 | height: 0, 84 | minWidth: '100%', 85 | maxWidth: '100%', 86 | minHeight: '100%', 87 | maxHeight: '100%', 88 | objectFit: 'contain' 89 | } 90 | 91 | export const ImageDivSpanImgStyle2 = { 92 | position: 'absolute', 93 | inset: '0px', 94 | boxSizing: 'border-box', 95 | padding: 0, 96 | border: 'none', 97 | margin: 'auto', 98 | display: 'block', 99 | width: 0, 100 | height: 0, 101 | minWidth: '100%', 102 | maxWidth: '100%', 103 | minHeight: '100%', 104 | maxHeight: '100%', 105 | objectFit: 'contain' 106 | } 107 | 108 | export const ImageDivSpanImgStyle3 = { 109 | position: 'absolute', 110 | inset: '0px', 111 | boxSizing: 'border-box', 112 | padding: 0, 113 | border: 'none', 114 | margin: 'auto', 115 | display: 'block', 116 | width: 0, 117 | height: 0, 118 | minWidth: '100%', 119 | maxWidth: '100%', 120 | minHeight: '100%', 121 | maxHeight: '100%', 122 | objectFit: 'contain', 123 | visibility: 'visible' 124 | } 125 | -------------------------------------------------------------------------------- /src/components/ChatBubble.js: -------------------------------------------------------------------------------- 1 | function ChatBubble (props) { 2 | const { direction, message } = props 3 | 4 | return direction === 'from' ? ( 5 |
    13 | {message} 14 |
    15 | ) : ( 16 |
    20 | {message} 21 |
    22 | ) 23 | } 24 | 25 | export default ChatBubble; 26 | -------------------------------------------------------------------------------- /src/components/ChatWithUs.js: -------------------------------------------------------------------------------- 1 | import { Button } from '@mui/material' 2 | import React, { useState, useEffect } from 'react' 3 | import ChatBubble from './ChatBubble' 4 | 5 | const buttonStyle = { 6 | width: '60px', 7 | minWidth: '60px', 8 | height: '60px', 9 | borderRadius: '40px', 10 | position: 'fixed', 11 | bottom: '40px', 12 | right: '40px', 13 | padding: 0, 14 | margin: 0, 15 | transition: 'all 0.2s ease-in-out 0s', 16 | justifyContent: 'center', 17 | alignItems: 'center', 18 | background: 'linear-gradient(135deg, rgb(42, 39, 218), rgb(0, 204, 255))', 19 | zIndex: 2 20 | } 21 | 22 | const ChatApp = () => { 23 | const savedUser = sessionStorage.getItem('userName') 24 | const [hideChat, setHideChat] = useState(true) 25 | const [newMessage, setNewMessage] = useState('') 26 | const [userName, setUserName] = useState( 27 | savedUser === undefined || savedUser === null ? '' : savedUser 28 | ) 29 | const [introPage, setIntroPage] = useState(false) 30 | const [msgHistory, setMsgHistory] = useState([]) 31 | const [socket, setSocket] = useState(null) 32 | 33 | const handleNewMessageChange = event => { 34 | setNewMessage(event.target.value) 35 | } 36 | 37 | const handleSubmit = e => { 38 | e.preventDefault() 39 | 40 | console.log(userName) 41 | 42 | if (userName === '') { 43 | const delayedAction = setTimeout(() => { 44 | document 45 | .getElementById('user-data-input-wrap') 46 | .setAttribute('class', 'field-wrapper ') 47 | 48 | clearTimeout(delayedAction) 49 | }, 850) 50 | 51 | document 52 | .getElementById('user-data-input-wrap') 53 | .setAttribute('class', 'field-wrapper shake') 54 | } else { 55 | handleSendMessage() 56 | 57 | localStorage.setItem('userName', userName) 58 | 59 | setIntroPage(false) 60 | } 61 | } 62 | 63 | const handleSendMessage = () => { 64 | if (newMessage.trim() !== '') { 65 | if (socket && socket.readyState === WebSocket.OPEN) { 66 | socket.send( 67 | JSON.stringify({ 68 | direction: 'from', 69 | message: newMessage, 70 | user: userName 71 | }) 72 | ) 73 | setNewMessage('') 74 | } 75 | } else { 76 | const delayedAction = setTimeout(() => { 77 | document 78 | .getElementById('new-message-textarea') 79 | .setAttribute('class', '') 80 | 81 | clearTimeout(delayedAction) 82 | }, 850) 83 | 84 | document 85 | .getElementById('new-message-textarea') 86 | .setAttribute('class', 'shake') 87 | } 88 | } 89 | 90 | useEffect(() => { 91 | const newSocket = new WebSocket('ws://localhost:5000') // WebSocket server URL 92 | // const newSocket = new WebSocket('ws://192.168.140.92:5000') // WebSocket server URL 93 | 94 | newSocket.onopen = () => { 95 | console.log('Connected to WebSocket server') 96 | } 97 | 98 | newSocket.onmessage = event => { 99 | const message = JSON.parse(event.data) 100 | 101 | setMsgHistory(message) 102 | } 103 | 104 | setSocket(newSocket) 105 | 106 | return () => { 107 | if (newSocket) { 108 | console.log('close socket') 109 | newSocket.close() 110 | } 111 | } 112 | }, []) 113 | 114 | return ( 115 | <> 116 |
    117 | {!introPage && ( 118 | 180 | )} 181 |
    182 | {!hideChat && ( 183 |
    188 | {introPage && ( 189 |
    198 | 216 |
    220 |
    221 |
    228 |
    229 |
    230 |
    231 | Please introduce yourself: 232 |
    233 |
    234 |
    235 | { 240 | setUserName(e.target.value) 241 | }} 242 | value={userName} 243 | /> 244 |
    245 |
    246 | 259 |
    260 |
    261 |
    265 |
    266 | )} 267 |
    275 |
    276 |
    283 |
    284 |
    285 |

    286 | 287 | Hi there{' '} 288 | 👋 293 | 294 |

    295 | 314 | 335 |
    342 | 343 | We reply immediately 344 | 345 |
    346 |
    347 |
    348 |
    354 | {msgHistory.map((history, index) => { 355 | return ( 356 | userName === history.user && ( 357 | 362 | ) 363 | ) 364 | })} 365 |
    366 |
    367 |
    368 |
    369 |
    370 |
    371 | 381 |
    382 |
    383 |
    384 |
    385 | 391 |
    392 | 411 |
    412 | 477 |
    478 |
    479 |
    480 | )} 481 | 482 | ) 483 | } 484 | 485 | export default ChatApp 486 | -------------------------------------------------------------------------------- /src/components/ToggleColorMode.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | import PropTypes from 'prop-types' 3 | 4 | import Box from '@mui/material/Box' 5 | import Button from '@mui/material/Button' 6 | 7 | function ToggleColorMode ({ mode, toggleColorMode }) { 8 | return ( 9 | 10 | 28 | 29 | ) 30 | } 31 | 32 | ToggleColorMode.propTypes = { 33 | mode: PropTypes.oneOf(['dark', 'light']).isRequired, 34 | toggleColorMode: PropTypes.func.isRequired 35 | } 36 | 37 | export default ToggleColorMode 38 | -------------------------------------------------------------------------------- /src/components/pages/JoinCommunity.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | import { 4 | ImageDivSpanStyle1, 5 | ImageDivSpanSpanStyle1, 6 | ImageDivSpanSpanImgStyle2, 7 | ImageDivSpanImgStyle3 8 | } from '../BaseCss' 9 | 10 | function JoinCommunity (props) { 11 | const theme = useTheme() 12 | 13 | return ( 14 |
    21 |
    22 |
    29 | Join community 30 |
    31 |
    32 |
    33 |
    34 |
    38 | Our social networks are for everyone who wants to be a part of the 39 | future, so don't hesitate about joining us! 40 |
    41 |
    42 |
    43 | 44 | 45 | 52 | 53 | illustration.svg 63 | 64 |
    65 |
    66 |
    67 |
    71 | Our social networks are for everyone who wants to be a part of the 72 | future, so don't hesitate about joining us! 73 |
    74 |
    75 |
    82 | 87 |
    94 |
    95 |
    102 | {' '} 103 |
    104 | 105 | Twitter 106 | 107 |
    108 |
    115 | {' '} 116 |
    117 |
    118 |
    119 | 124 |
    131 |
    132 |
    139 | {' '} 140 |
    141 | 142 | Linkedin 143 | 144 |
    145 |
    152 | {' '} 153 |
    154 |
    155 |
    156 | 161 |
    168 |
    169 |
    176 | {' '} 177 |
    178 | 179 | Discord 180 | 181 |
    182 |
    189 | {' '} 190 |
    191 |
    192 |
    193 | 198 |
    205 |
    206 |
    213 | {' '} 214 |
    215 | 216 | Github 217 | 218 |
    219 |
    226 | {' '} 227 |
    228 |
    229 |
    230 | 235 |
    242 |
    243 |
    250 | {' '} 251 |
    252 | 253 | Instagram 254 | 255 |
    256 |
    263 | {' '} 264 |
    265 |
    266 |
    267 | 272 |
    279 |
    280 |
    287 | {' '} 288 |
    289 | 290 | Youtube 291 | 292 |
    293 |
    300 | {' '} 301 |
    302 |
    303 |
    304 | 309 |
    316 |
    317 |
    324 | {' '} 325 |
    326 | 327 | Tiktok 328 | 329 |
    330 |
    337 | {' '} 338 |
    339 |
    340 |
    341 | 346 |
    353 |
    354 |
    361 | {' '} 362 |
    363 | 364 | Facebook 365 | 366 |
    367 |
    374 | {' '} 375 |
    376 |
    377 |
    378 |
    379 |
    380 |
    381 |
    382 | ) 383 | } 384 | 385 | export default JoinCommunity 386 | -------------------------------------------------------------------------------- /src/components/pages/ScrollTop.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react' 2 | import { useLocation } from 'react-router-dom' 3 | 4 | const ScrollToTop = () => { 5 | const { pathname, hash } = useLocation() 6 | 7 | useEffect(() => { 8 | if (hash === '') { 9 | window.scrollTo(0, 0) 10 | } 11 | }, [pathname, hash]) 12 | 13 | return null 14 | } 15 | 16 | export default ScrollToTop 17 | -------------------------------------------------------------------------------- /src/components/pages/about/AboutIntroduction.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function AboutIntroduction () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    20 | 21 |
    28 |
    29 |
    30 |
    31 |
    32 |

    39 | About Us 40 |

    41 |
    42 |
    46 | Solicy is a fast-growing company providing Blockchain and 47 | Software solutions to customers all over the world. We have 48 | built over 100+ trustworthy projects, each magnifying the 49 | innovation environment. We work collaboratively and offer 50 | solutions of the highest standards: unmatched customer service 51 | and expert technical support. We care deeply about the people we 52 | serve. Nothing gives us greater pride than seeing our clients 53 | delighted with the work we’ve done. 54 |
    55 |
    56 |
    57 | 58 | 59 | 66 | 67 | /icons/aboutIcons/aboutIcon.svg 77 | 78 |
    79 |
    80 |
    81 |
    82 |
    83 | ) 84 | } 85 | 86 | export default AboutIntroduction 87 | -------------------------------------------------------------------------------- /src/components/pages/about/AboutMain.js: -------------------------------------------------------------------------------- 1 | import AboutIntroduction from './AboutIntroduction' 2 | import AboutVideo from './AboutVideo' 3 | import AboutUs from './AboutUs' 4 | import OurMission from './AboutOurMission' 5 | import OurValues from './AboutOurValues' 6 | import GetInTouch from '../GetInTouch' 7 | 8 | function About () { 9 | return ( 10 |
    11 | 12 | 13 | 14 | 15 | 16 | 17 |
    18 | ) 19 | } 20 | 21 | export default About 22 | -------------------------------------------------------------------------------- /src/components/pages/about/AboutOurMission.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function OurMission () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    14 | 15 |
    16 | 23 | Our Mission 24 | 25 |
    26 |
    30 |
    31 |
    32 |
    33 | 34 | 35 | 42 | 43 | ourMission 53 | 54 |
    55 |
    56 |
    57 | 58 |
    59 | 66 | Our Mission 67 | 68 |
    69 |
    73 |
    74 |

    81 | We keep up with innovations and provide a wide range of services 82 | since the high demand for blockchain development services in the 83 | market. We grow exponentially, yet preserve the values that have 84 | driven us from the first day. We aim to inhale the benefits of 85 | blockchain and software technologies into our client's business 86 | ambitions. 87 |

    88 |
    89 |
    90 |
    91 |
    92 | ) 93 | } 94 | 95 | export default OurMission 96 | -------------------------------------------------------------------------------- /src/components/pages/about/AboutOurValues.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle1, 6 | ImageDivSpanImgStyle2 7 | } from '../../BaseCss' 8 | 9 | function OurValues () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    21 |
    22 |
    23 |
    30 | Our Values 31 |
    32 |
    33 |
    34 |
    35 |
    36 |
    37 |
    44 |
    45 | 46 | 47 | 53 | 54 | /icons/quality.svg 63 | 64 |
    65 |
    66 |

    Quality

    67 |

    68 | Our primary focus goes on providing high-quality services. We 69 | take the best technological advancement has to offer to build 70 | effective solutions. 71 |

    72 |
    73 |
    74 |
    75 |
    76 |
    77 |
    78 |
    85 |
    86 | 87 | 88 | 94 | 95 | /icons/clock.svg 104 | 105 |
    106 |
    107 |

    Fast delivery

    108 |

    109 | We know a thing or two about fast delivery. We solve even the 110 | most complex issues in a comparably short time. 111 |

    112 |
    113 |
    114 |
    115 |
    116 |
    117 |
    118 |
    125 |
    126 | 127 | 128 | 134 | 135 | /icons/lamp.svg 144 | 145 |
    146 |
    147 |

    Enthusiasm

    148 |

    149 | Oh, we enjoy our work; every second of it brings us joy. 150 | Perhaps that’s why we are good at what we do. 151 |

    152 |
    153 |
    154 |
    155 |
    156 |
    157 |
    158 |
    165 |
    166 | 167 | 168 | 174 | 175 | /icons/person.svg 184 | 185 |
    186 |
    187 |

    People

    188 |

    189 | We care about people: not just our clients, but all of the 190 | stakeholders a project might have. We put people's safety and 191 | well-being first. Our priority for those individuals is 192 | unprecedented. 193 |

    194 |
    195 |
    196 |
    197 |
    198 |
    199 |
    200 |
    207 |
    208 | 209 | 210 | 216 | 217 | /icons/wokspace.svg 226 | 227 |
    228 |
    229 |

    Integrity

    230 |

    231 | Our team employs strict integrity policies: intellectual 232 | property protection, non-disclosure rules, and a no-cheating 233 | code are of great significance to us. 234 |

    235 |
    236 |
    237 |
    238 |
    239 |
    240 |
    241 |
    248 |
    249 | 250 | 251 | 257 | 258 | /icons/text.svg 267 | 268 |
    269 |
    270 |

    Learning

    271 |

    272 | In this evolving industry, we try to keep up. Learning is key 273 | to many doors, and we aim to open a lot of those. 274 |

    275 |
    276 |
    277 |
    278 |
    279 |
    280 |
    281 | ) 282 | } 283 | 284 | export default OurValues 285 | -------------------------------------------------------------------------------- /src/components/pages/about/AboutUs.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function AboutUs () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    20 |
    21 |
    22 |
    23 | 24 | Excellence Is What We Aim For 25 | 26 |
    27 |
    31 |
    32 |
    33 | 34 | 35 | 42 | 43 | about 53 | 54 |
    55 |
    56 |
    57 | 58 | Excellence Is What We Aim For 59 | 60 |
    61 |
    65 | We fiercely climb the growth ladder to generate more value for the 66 | world. Solicy emphasizes employing the most advanced technologies to 67 | surpass any expectations our clients might have. To provide the 68 | highest quality services, we continue to learn, aspire, and achieve 69 | new professional milestones. 70 |
    71 |
    72 | 73 | We fiercely climb the growth ladder to generate more value for the 74 | world. Solicy emphasizes employing the most advanced technologies to 75 | surpass any expectations our clients might have. To provide the 76 | highest quality services, we continue to learn, aspire, and achieve 77 | new professional milestones. 78 | 79 |
    80 |
    81 | ) 82 | } 83 | 84 | export default AboutUs 85 | -------------------------------------------------------------------------------- /src/components/pages/about/AboutVideo.js: -------------------------------------------------------------------------------- 1 | import { useState, useRef } from 'react' 2 | 3 | import { 4 | ImageDivSpanStyle1, 5 | ImageDivSpanSpanStyle1, 6 | ImageDivSpanSpanImgStyle2, 7 | ImageDivSpanImgStyle3 8 | } from '../../BaseCss' 9 | 10 | function AboutVideo () { 11 | const [isPlaying, setIsPlaying] = useState(true) 12 | const [showButton, setShowButton] = useState(false) 13 | const videoRef = useRef(null) 14 | let hideButtonTimer = null 15 | 16 | const handleVideoEnd = () => { 17 | setIsPlaying(false) 18 | handleMouseMove() 19 | } 20 | 21 | const handleMouseMove = () => { 22 | setShowButton(true) 23 | if (hideButtonTimer) { 24 | clearTimeout(hideButtonTimer) 25 | } 26 | 27 | hideButtonTimer = setTimeout(() => { 28 | setShowButton(false) 29 | }, 2000) // Button disappears after 2 seconds 30 | } 31 | 32 | const togglePlay = () => { 33 | const video = videoRef.current 34 | 35 | if (isPlaying) { 36 | video.pause() 37 | } else { 38 | video.play() 39 | } 40 | 41 | setIsPlaying(!isPlaying) 42 | } 43 | 44 | return ( 45 |
    46 |
    47 | {showButton && ( 48 |
    49 | 50 | 51 | 58 | 59 | {isPlaying ? ( 60 | 70 | ) : ( 71 | 80 | )} 81 | 82 |
    83 | )} 84 | 99 |
    100 |
    101 | ) 102 | } 103 | 104 | export default AboutVideo 105 | -------------------------------------------------------------------------------- /src/components/pages/blog/BlogMain.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | import BlogInner from './BlogInner' 4 | import GetInTouch from '../GetInTouch' 5 | 6 | function Blog () { 7 | const theme = useTheme() 8 | 9 | return ( 10 |
    17 | 18 | 19 | 20 |
    21 | ) 22 | } 23 | 24 | export default Blog 25 | -------------------------------------------------------------------------------- /src/components/pages/careers/CareersIntro.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function CareersIntro () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    14 | 15 |
    22 |
    23 |
    24 |
    25 |
    26 |

    27 | Careers 28 |

    29 |
    30 |
    34 | Solicy believes in hard work, enthusiasm, and passion. We 35 | constantly encourage individuals with little or even no 36 | experience to join our adventure. As a result of their 37 | dedication and ambition, many starting professionals have grown 38 | into full-scale experts at Solicy. 39 |
    40 |
    41 | It’s time for you to join the exciting roller-coaster of 42 | career-building. By joining our big family you’ll enter the 43 | Blockchain and Software world, and essentially become a part of 44 | Solicy family. 45 |
    46 |
    47 |
    48 | 49 | 50 | 57 | 58 | {theme.palette.mode === 'dark' ? ( 59 | /dark/darkFrame.svg 69 | ) : ( 70 | /Frame.svg 80 | )} 81 | 82 |
    83 |
    84 |
    85 |
    86 |
    87 | ) 88 | } 89 | 90 | export default CareersIntro 91 | -------------------------------------------------------------------------------- /src/components/pages/careers/CareersJoinOurTeamInfo.js: -------------------------------------------------------------------------------- 1 | export const ISSInfo = { 2 | name: 'IT Sales Specialist', 3 | shortDesc: 'Solicy is looking for an IT Sales Specialist to join our team', 4 | longDesc: 5 | "Solicy is looking for an innovative sales specialist with a great analytical mind to join our team. In this role, your duties will include assessing clients' IT needs and demonstrating our IT solutions to potential clients. If you are ready to bring new challenges to your career and develop and implement a sales strategy we help you. The sales specialist's duties will include managing the sales staff, training new hires, conducting extensive market research, creating sales projections and advertising budgets, and revising current marketing plans. Additionally, you ought to be able to change sales policies and suggest improvements for companies expansion.", 6 | responsibilities: [ 7 | 'Conducting market research and sharing with the team.', 8 | 'Setting sales targets and implementing incentives.', 9 | 'Managing a network of vendors and suppliers.', 10 | 'Keeping up-to-date with advancements in marketing.', 11 | 'Maintaining excellent relationships with customers built on trust, and encouraging the rest of the sales team to follow this example.', 12 | 'Make cold calls or perform warm outreach, putting an outside-the-box approach to work to develop new and unique sales tactics.' 13 | ], 14 | qualifications: [ 15 | "Bachelor's degree in marketing, business, or similar.", 16 | 'Experience in an IT sales role or similar experience is a must.', 17 | 'Ability to recognize problems and find solutions.', 18 | 'Make cold calls or perform warm outreach, putting an outside-the-box approach to work to develop new and unique sales tactics.', 19 | 'Willingness to work overtime when required.', 20 | 'Excellent communication, presentational and analytical skills.', 21 | 'Ability to build rapport and collaborate with others within the company and externally.', 22 | 'Fluency in English.', 23 | 'Willingness to work overtime when required.' 24 | ] 25 | } 26 | 27 | export const PHPInfo = { 28 | name: 'PHP Developer', 29 | shortDesc: 'Solicy is looking for a PHP Developer to join our team', 30 | longDesc: 31 | "We're looking for an excited PHP Developer to join our team at Solicy. You'll use the latest tech to work on making our software better from start to finish. Your goal? To make our software awesome for users everywhere. If you love solving puzzles, picking up new skills quickly, and want to make software that stands out, then Solicy is the place for you!", 32 | responsibilities: [ 33 | 'Design, build, and maintain efficient, reusable, and reliable PHP code.', 34 | 'Work closely with our team to architect and implement web applications that cater to both our internal needs and our external clientele.', 35 | 'Rapidly experiment with new concepts and ideas to push the boundaries of what our web applications can achieve.', 36 | 'Debug, test, and refine software to produce the highest quality of code and functionality.', 37 | 'Take initiative in developing automated tests, managing continuous integration and deployment, and ensuring a seamless user experience.', 38 | 'Innovate by developing new features, optimizing existing functionalities, and swiftly addressing any bugs or issues.', 39 | 'Document your development journey, participate in code reviews, and foster a culture of constructive feedback and continuous improvement.' 40 | ], 41 | qualifications: [ 42 | 'Willingness to work overtime when required.', 43 | 'Profound knowledge of PHP and familiarity with various PHP frameworks (Laravel, Symfony, etc.).Proven track record of developing web applications from the ground up.', 44 | "Bachelor's degree in Computer Science, Engineering, or a related field.", 45 | 'Excellent problem-solving, debugging, and performance optimization skills.', 46 | 'A strong foundation in writing comprehensive unit and integration tests.', 47 | 'A genuine interest in keeping up with the latest trends in web development, tools, and technologies.', 48 | 'Ability to work efficiently, independently, and as part of a team.', 49 | 'Strong communication and organizational skills, with a knack for meticulous documentation.', 50 | 'Familiarity with front-end technologies such as HTML, CSS, and JavaScript.' 51 | ] 52 | } 53 | 54 | export const ISDInfo = { 55 | name: 'Intern Software Developer', 56 | shortDesc: 57 | 'Solicy is looking for an Intern Software Developer to join our team', 58 | longDesc: 59 | "We're looking for an Intern Software Developer who's excited about tackling new challenges. You'll join our team, using the latest tech to work on different software parts, both what users see and the tech behind it. Your goal? To help make our software great for people all over the world. If you love learning new things, solving problems, and making cool software, we want you at Solicy!", 60 | responsibilities: [ 61 | 'Architect, design, and develop web applications to support both internal and external clients and stakeholders.', 62 | 'Collaborate with fellow developers to design and implement industry-leading systems and solutions end-to-end.', 63 | 'Rapidly prototype new ideas, concepts, and designs.', 64 | 'Write, modify, and debug web applications.', 65 | 'Design and manage automated test scripts, and oversee continuous builds and deployment.', 66 | 'Develop new features, refine existing ones, and fix bugs in current code.', 67 | 'Self-document your development processes, engage in peer reviews, and provide constructive feedback.' 68 | ], 69 | qualifications: [ 70 | 'Willingness to work overtime when required.', 71 | 'Solid knowledge of one or several languages (like JavaScript, C#/.NET, Python) and frameworks (such as Node.js, React, Vue, etc.).', 72 | 'Previous work experience is a significant advantage.', 73 | 'Exceptional communication, organization, and leadership skills.', 74 | 'Extensive experience in creating applications E2E from scratch.', 75 | 'Excellent debugging and optimization skills.', 76 | 'Experience in unit/integration testing.', 77 | 'Eagerness to learn new tools and technologies.', 78 | 'Strong work ethic and the ability to work quickly.' 79 | ] 80 | } 81 | 82 | export const SDInfo = { 83 | name: 'Solidity Developer', 84 | shortDesc: 'Solicy is looking for a Solidity Developer to join our team', 85 | longDesc: 86 | "We're looking for a Solidity Developer who's up for some exciting challenges. At Solicy, you'll be part of a team that's all about the newest blockchain tech. You'll work on cool projects, like creating smart contracts and improving our blockchain apps. Your goal? To help us make our blockchain stuff better and easier for everyone around the world. If you're into learning new things, solving puzzles, and making awesome blockchain software, we'd love to have you join us at Solicy!", 87 | responsibilities: [ 88 | 'Write smart contracts using Solidity that are safe and smart.', 89 | "Work together with our team to make cool blockchain stuff that's easy for everyone to use.", 90 | 'Try out new ideas to see how far we can go with blockchain.', 91 | "Carefully check and improve our code to make sure it's top-notch.", 92 | 'Take charge of testing and putting our software out there, making sure it works smoothly for users.', 93 | 'Keep learning new things to stay on top of all the latest in blockchain tech.' 94 | ], 95 | qualifications: [ 96 | 'Willingness to work overtime when required.', 97 | 'Solid experience with Blockchain development (Solidity)', 98 | 'Previous work experience is a significant advantage.', 99 | 'Exceptional communication, organization, and leadership skills.', 100 | 'Extensive experience in creating applications E2E from scratch.', 101 | 'Excellent debugging and optimization skills.', 102 | 'Experience in unit/integration testing.', 103 | 'Eagerness to learn new tools and technologies.', 104 | 'Strong work ethic and the ability to work quickly.' 105 | ] 106 | } 107 | -------------------------------------------------------------------------------- /src/components/pages/careers/CareersJoinSolicy.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function CareersJoinSolicy () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    14 |
    15 |

    Join Solicy!

    16 |
    17 | 18 | 19 | 26 | 27 | career 37 | 38 |
    39 |
    40 |
    41 | 48 | Join Solicy! 49 | 50 |
    51 |
    55 | If you want to be part of the future then Solicy is your answer. We 56 | appreciate the willingness to learn new technologies and are ready 57 | to help you advance your skills and grow with us. Your talent will 58 | be noticed and supported by our team, helping you achieve your 59 | fullest potential.By joining Solicy you’ll enter the Blockchain and 60 | Crypto world, becoming highly competitive and demanded in the 61 | market. Become part of our big family and get the opportunity to 62 | take part in cool blockchain projects, expand your talent and have 63 | fun. 64 |
    65 |
    66 |
    67 |
    68 | ) 69 | } 70 | 71 | export default CareersJoinSolicy 72 | -------------------------------------------------------------------------------- /src/components/pages/careers/CareersMain.js: -------------------------------------------------------------------------------- 1 | import CareersIntro from './CareersIntro' 2 | import CareersJoinSolicy from './CareersJoinSolicy' 3 | import CareersJoinOurTeam from './CareersJoinOurTeam' 4 | import GetInTouch from '../GetInTouch' 5 | 6 | function Careers () { 7 | return ( 8 |
    9 | 10 | 11 | 12 | 13 |
    14 | ) 15 | } 16 | 17 | export default Careers 18 | -------------------------------------------------------------------------------- /src/components/pages/contact/Contact.js: -------------------------------------------------------------------------------- 1 | import GetInTouch from '../GetInTouch' 2 | import JoinCommunity from '../JoinCommunity' 3 | 4 | function Contact () { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | ) 11 | } 12 | 13 | export default Contact 14 | -------------------------------------------------------------------------------- /src/components/pages/home/HomeAchievements.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | function Achievements () { 4 | const theme = useTheme() 5 | 6 | return ( 7 |
    14 |
    15 |
    16 |
    17 |

    2+

    18 |
    19 | 20 |

    Years in industry

    21 |
    22 |
    23 |
    24 |
    25 |
    26 |
    27 |

    100+

    28 |
    29 | Projects 30 |

    successfully done

    31 |
    32 |
    33 |
    34 |
    35 |
    36 |
    37 |

    70+

    38 |
    39 | Employees 40 |

    41 |
    42 |
    43 |
    44 |
    45 |
    46 |
    47 |

    40+

    48 |
    49 | Ongoing Partners 50 |

    51 |
    52 |
    53 |
    54 |
    55 |
    56 | ) 57 | } 58 | 59 | export default Achievements 60 | -------------------------------------------------------------------------------- /src/components/pages/home/HomeIntroduction.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | const animateButton = () => { 4 | const keyframes = [ 5 | { opacity: 1, offset: 0.3 }, 6 | { opacity: 1, offset: 0.55 }, 7 | { opacity: 0, strokeDashoffset: 4, offset: 1 } 8 | ] 9 | 10 | const options = { 11 | duration: 1000, 12 | iterations: 1, 13 | easing: 'linear' 14 | } 15 | 16 | const svgs = document.querySelectorAll( 17 | '.scheduleCall_sketch-button__xvorv svg' 18 | ) 19 | for (let i = 0; i < svgs.length; ++i) svgs[i].animate(keyframes, options) 20 | } 21 | 22 | const Introduction = ({ scrollToGetInTouch }) => { 23 | const theme = useTheme() 24 | 25 | return ( 26 |
    33 | 34 |
    41 |
    42 |
    43 |
    44 |
    45 |

    52 | Fluent in Development 53 |

    54 |
    55 |
    59 | We provide flexible and intuitive web3, software, and blockchain 60 | solutions 61 |
    62 |
    63 |
    64 | 248 | 338 |
    339 |
    340 |
    341 |
    342 | 358 | 372 | 390 | 391 | /icons/home-intro.svg 417 | 418 |
    419 |
    420 |
    421 |
    422 |
    423 | ) 424 | } 425 | 426 | export default Introduction 427 | -------------------------------------------------------------------------------- /src/components/pages/home/HomeJoinCommunity.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | import JoinCommunity from '../JoinCommunity' 4 | 5 | function HomeJoinCommunity () { 6 | const theme = useTheme() 7 | 8 | return ( 9 | <> 10 | 11 |
    15 |
    23 |
    24 | Join Our Telegram Community 25 |
    26 |
    @Solicy_net
    27 | 33 |
    Join Now
    34 |
    35 |
    36 |
    37 | 38 | ) 39 | } 40 | 41 | export default HomeJoinCommunity 42 | -------------------------------------------------------------------------------- /src/components/pages/home/HomeMain.js: -------------------------------------------------------------------------------- 1 | import { useRef } from 'react' 2 | 3 | import Introduction from './HomeIntroduction' 4 | import Achievements from './HomeAchievements' 5 | import TechStackOurClient from './HomeTechStackOurClient' 6 | import SeeAbout from './HomeSeeAbout' 7 | import OurServices from './HomeOurServices' 8 | import TechStack from './HomeTechStack' 9 | import HomeJoinCommunity from './HomeJoinCommunity' 10 | import GetInTouch from '../GetInTouch' 11 | 12 | function Home () { 13 | const scrollToGetInTouchRef = useRef(null) 14 | 15 | const scrollToGetInTouch = () => { 16 | if (scrollToGetInTouchRef.current) { 17 | scrollToGetInTouchRef.current.scrollIntoView({ behavior: 'smooth' }) 18 | } 19 | } 20 | 21 | return ( 22 | <> 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
    31 | 32 | 33 | ) 34 | } 35 | 36 | export default Home 37 | -------------------------------------------------------------------------------- /src/components/pages/home/HomeOurServices.js: -------------------------------------------------------------------------------- 1 | import { useNavigate } from 'react-router-dom' 2 | 3 | import { 4 | ImageDivSpanStyle1, 5 | ImageDivSpanSpanStyle1, 6 | ImageDivSpanSpanImgStyle2, 7 | ImageDivSpanImgStyle3 8 | } from '../../BaseCss' 9 | 10 | function OurServices () { 11 | const navigate = useNavigate() 12 | 13 | return ( 14 |
    15 |
    16 |
    17 |
    18 | Our Services 19 |
    20 |
    21 |
    22 |
    navigate('/blockchain')} 25 | > 26 |
    27 |
    28 |
    29 |
    30 | 31 | 32 | 39 | 40 | /icons/ourServiceBlockchain.svg 50 | 51 | 52 |
    53 |
    54 |
    Blockchain Development
    55 |
    56 |
    57 |
    58 |
    59 |
    60 |
    61 |
    navigate('/software')} 64 | > 65 |
    66 |
    67 |
    68 |
    69 | 70 | 71 | 78 | 79 | /icons/ourServiceSoftware.svg 89 | 90 | 91 |
    92 |
    93 |
    Software Development
    94 |
    95 |
    96 |
    97 |
    98 |
    99 |
    100 |
    101 |
    102 |
    103 | ) 104 | } 105 | 106 | export default OurServices 107 | -------------------------------------------------------------------------------- /src/components/pages/home/HomeSeeAbout.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { Link } from 'react-router-dom' 3 | 4 | function SeeAbout () { 5 | const theme = useTheme() 6 | 7 | return ( 8 |
    15 |
    16 | 32 | 46 | 64 | 65 | aboutLogo.svg 91 | 92 |
    93 |
    94 |
    95 | 102 | About Solicy 103 | 104 |
    105 |
    109 | Solicy is a fast-growing company providing Blockchain and Software 110 | solutions to customers from around the globe. Due to the high demand 111 | for Blockchain development services in the market, we keep up with 112 | innovations and provide a wide range of services. 113 |
    114 | 115 | 121 | 122 |
    123 |
    124 | ) 125 | } 126 | 127 | export default SeeAbout 128 | -------------------------------------------------------------------------------- /src/components/pages/other/PrivacyPolicy.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | function PrivacyPolicy () { 4 | const theme = useTheme() 5 | return ( 6 |
    7 | 8 |
    15 |
    16 |
    17 |

    18 | Privacy Policy 19 |

    20 |
    21 |
    22 |
    23 |
    24 | About this Privacy Policy 25 |
    26 |
    33 | Solicy respects and realizes the importance of protecting your 34 | privacy and this Privacy Policy explains what information of 35 | yours will be collected by Solicy. It also describes how the 36 | information given by you will be used. Our privacy practices are 37 | designed to provide a high level of protection for your data. We 38 | will not use or share your information with anyone except as 39 | described in this Privacy Policy. Please read this Privacy 40 | Policy carefully to understand our views and practices regarding 41 | your data before browsing this website. 42 |
    43 |
    44 |
    45 |
    46 | Personal data we collect from you 47 |
    48 |
    55 | We may collect data, including your Personal Data, through our 56 | interactions with you, and when you complete forms on our 57 | website. When submitting your request/inquiry on Solicy 58 | websites, you may be asked for information such as your full 59 | name, email address, phone number, and the company you work for 60 | or own.
    61 | You agree that you are solely responsible for your reuse of 62 | Content made available through the Site, including providing 63 | proper attribution. You should review the terms of the 64 | applicable license before you use the Content so that you know 65 | what you can and cannot do. Solicy does not intend to collect 66 | sensitive information through its websites unless it is legally 67 | required to do so. 68 |
    69 |
    70 |
    71 |
    72 | How do we use your Personal Data 73 |
    74 |
    81 | We use the information that we collect to operate and maintain 82 | our website and to provide the services and information that you 83 | request, to allow you to contact us, provide access to the 84 | requested whitepaper, respond to your comments, questions, and 85 | concerns, and for other purposes specified herein. 86 |
    87 | If you have contacted us via this website or otherwise, we may 88 | process the personal data you provided to us to be able to 89 | answer your questions, organize the meeting, call, or other 90 | communication based on our legitimate interest. We will also 91 | process your job applications where you applied for a vacancy. 92 |
    93 |
    94 |
    95 |
    96 | Cookies 97 |
    98 |
    105 | We collect anonymous information from visits to our website to 106 | help us provide better customer service. For example, we record 107 | certain automatically collected information, which includes IP 108 | address, web browser, OS, the web pages or sites visited just 109 | before or just after using the website, keep track of the 110 | domains from which you visit and we also measure your activity 111 | on the website, but we do so in ways that keep the information 112 | anonymous. Solicy uses this data to analyze trends and 113 | statistics, to prepare analytics for business intelligence, to 114 | target our advertising and to help us provide better customer 115 | service. Cookies can be used to provide you with tailored 116 | information from a website. You can determine if and how a 117 | cookie will be accepted by configuring your browser, which is 118 | installed in the computer you are using to access the website. 119 | If you desire, you can change those configurations in your 120 | browser to accept all cookies, to be notified when a cookie is 121 | sent, or to reject all cookies. 122 |
    123 |
    124 |
    125 |
    126 | Children 127 |
    128 |
    135 | We protect our children. Our services are not directed to 136 | children under the age of 15 years, or equivalent minimum age in 137 | the relevant jurisdiction. If you are under the age limit of 15 138 | years please do not use our services and do not provide us with 139 | any Personal Data or information. We will not collect, process 140 | the Personal Information of users under 15 if we have actual 141 | knowledge that the user is less than those years of age. 142 |
    143 |
    144 |
    145 |
    146 | How to contact us 147 |
    148 |
    155 | You understand and agree that you are personally responsible for 156 | your behavior on the Site. You agree to indemnify, defend and 157 | hold harmless Company, its affiliated companies, employees, 158 | agents, and any third-party information providers from and 159 | against all claims, losses, expenses, damages and costs 160 | (including, but not limited to, direct, incidental, 161 | consequential, exemplary and indirect damages), and reasonable 162 | attorneys fees, resulting from or arising out of your use, 163 | misuse, or inability to use the Site or the Content, or any 164 | violation by you of these Terms. 165 |
    166 |
    167 |
    168 |
    169 |
    170 |
    171 | ) 172 | } 173 | 174 | export default PrivacyPolicy 175 | -------------------------------------------------------------------------------- /src/components/pages/other/TermsAndConditions.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | function TermsAndConditions () { 4 | const theme = useTheme() 5 | return ( 6 |
    7 | 8 |
    9 |
    10 |
    11 |
    12 |
    19 | 20 | Terms & Conditions 21 | 22 |
    23 |
    24 |
    25 |
    26 |
    27 |
    34 | Please read these Terms of Use (“Terms”, “Terms of Use”) 35 | carefully before using the https://www.solicy.net/ (the “Site”) 36 | operated by Solicy Corporation (“The Company”, “us”, “we”, or 37 | “our”). 38 |
    39 |
    46 | This Site provides online access to information about the 47 | Company and our products, services and opportunities. 48 |
    49 |
    56 | Your access to and use of the Site is conditioned on your 57 | acceptance of and compliance with these Terms. These Terms apply 58 | to all visitors, users and others who access or use the Site. 59 |
    60 |
    61 |
    62 |
    Purchases
    63 |
    70 | {' '} 71 | If you wish to purchase any our products and services 72 | ("Purchase"), you may send the request in one of the following 73 | ways: 74 |
    75 |
      76 |
    • 77 |

      send the request via contact form

      {' '} 78 |
    • 79 |
    • 80 |

      send the request to contact@solicy.net

      {' '} 81 |
    • 82 |
    83 |
    84 |
    85 |
    86 | Content, Copyright and Trademarks 87 |
    88 |
    95 | All written content, data, information, files, pictures, photos, 96 | user interfaces, visual interfaces, photographs, trademarks, 97 | logos, computer code, etc. that describe our products or 98 | services.
    99 | (“Content”), contained on the Site is owned, controlled, or 100 | licensed by or to Company, and is protected by applicable 101 | intellectual property and other laws, including trademark and 102 | copyright laws. The company owns and retains all copyrights in 103 | the Content.
    104 | You agree that the Company disclaims all representations and 105 | warranties with regard to any access you may have to the 106 | Content. In no event will Company be made responsible in any way 107 | for any Content, including but not limited to any infringing 108 | Content, any errors or omissions in Content, or for any loss or 109 | damage of any kind resulting from the use of any Content posted, 110 | transmitted, linked from, or otherwise accessible through, or 111 | made available via, the Site.You agree that you alone are in 112 | charge of giving credit where credit is due when using any of 113 | the Content made accessible through the Site. Before using the 114 | Content, you should study the terms of the relevant license to 115 | understand what is acceptable and forbidden.
    116 | Except as expressly permitted in these Terms, no part of the 117 | Site and no Content may be copied, reproduced, modified, 118 | published, republished, uploaded, posted, publicly displayed, 119 | encoded, translated, transmitted, or distributed in any way 120 | (including "mirroring") to another computer, server, website, or 121 | another medium for publication or distribution or any commercial 122 | enterprise, without the express prior written consent of the 123 | Company. Additionally, you consent to refrain from altering, 124 | renting, leasing, loaning, purchasing, selling, disseminating, 125 | transmitting, or broadcasting the Work or produce derivative 126 | works based on the work.
    127 | The logos and trademarks of the company are registered 128 | trademarks and belong to the company. The Site's look, 129 | organization, color scheme, and design are all protected trade 130 | dress. You don't get any permission or rights to use the 131 | information above. Any recommendations or other feedback you 132 | submit, without restriction or payment, may be used on the Site. 133 | You may use the Site or the Content only for non-commercial, 134 | personal purposes and/or learn more about the Company's products 135 | and services, as long as you conform to these Terms, do not 136 | remove any proprietary notice language from the Content or any 137 | part of the Content, copy or post the Content on any networked 138 | computer or broadcast it in any media, do not make any changes 139 | to the Content or any part of the Content, and do not add any 140 | new revisions. 141 |
    142 |
    143 |
    144 |
    145 | Prohibited use of the site 146 |
    147 |
    154 | By accessing the Site, you agree that you will not: 155 |
    156 |
      157 |
    • 158 |

      Use the Site in violation of these Terms

      159 |
    • 160 |
    • 161 |

      162 | Copy, modify, create a derivative work from, reverse 163 | engineer or reverse assemble the Site, or otherwise attempt 164 | to discover any source code, or allow any third party to do 165 | so 166 |

      167 |
    • 168 |
    • 169 |

      170 | Sell, assign, sublicense, distribute, commercially exploit, 171 | grant a security interest in or otherwise transfer any right 172 | in, or make available to a third party, the Content or Site 173 | in any way 174 |

      175 |
    • 176 |
    • 177 |

      178 | Use the Site in any manner that damages, disables, 179 | overburdens, or impairs Site or interferes with any other 180 | party's use and enjoyment of the Site{' '} 181 |

      182 |
    • 183 |
    • 184 |

      185 | Mirror or frame the Site or any part of it on any other web 186 | site or web page 187 |

      188 |
    • 189 |
    • 190 |

      Attempt to gain unauthorized access to the Site

      191 |
    • 192 |
    • 193 |

      194 | Probe, scan or test the vulnerability of the Site or any 195 | network connected to the Site, nor breach the security or 196 | authentication measures on the Site or any network connected 197 | to the Site 198 |

      199 |
    • 200 |
    • 201 |

      202 | Take any action that imposes an unreasonable or 203 | disproportionately large load on the infrastructure of the 204 | Site or any systems or networks connected to the Site 205 |

      206 |
    • 207 |
    • 208 |

      209 | Use any device, software or routine to interfere or attempt 210 | to interfere with the proper working of the Site 211 |

      212 |
    • 213 |
    214 |
    215 |
    216 |
    217 | Privacy Policy 218 |
    219 |
    226 | By using the Site you accept the terms of Privacy Policy which 227 | is an integral part of these Terms. Please check our{' '} 228 | 229 | Privacy Policy 230 | {' '} 231 | to learn more
    232 |
    233 |
    234 |
    235 |
    236 | Disclaimer: Limitations of Liability 237 |
    238 |
    245 | To the maximum extent permitted by applicable law, Company 246 | disclaims any representations, warranties, and conditions 247 | relating to Site and the use of Site (including, without 248 | limitation, any warranties implied by law in respect of 249 | satisfactory quality, fitness for purpose, and/or the use of 250 | reasonable care and skill). To the extent that the Site and 251 | Content are provided free of charge, the Company will not be 252 | liable for any loss or damage of any nature. The company makes 253 | no representations about the suitability, reliability, 254 | availability, timeliness, security, or accuracy of the site or 255 | the content for any purpose. The site and its content are 256 | delivered on an “As-is” and “As-available” basis.The content may 257 | include inaccuracies or typographical errors or other errors or 258 | inaccuracies and may not be complete or current in no event 259 | shall the company be liable or responsible for any direct, 260 | indirect, incidental, consequential, special, or exemplary 261 | damages of any kind, including without limitation, lost profits 262 | or lost opportunities, even if advised of the possibility of 263 | such damages in advance and regardless of the cause of action 264 | upon which any such claim is based. Your sole remedy against the 265 | company for dissatisfaction with the site or any content is to 266 | stop using the site or any such content.
    267 | If the Company is found to be liable to you for any loss or 268 | damage resulting from or connected in any way to your use of the 269 | Site or any Content, despite the other terms of these Terms, the 270 | Company's liability will never exceed $200.
    271 | The aforementioned disclaimer is relevant to any losses, 272 | liabilities, or injuries brought on by any breach of contract, 273 | tort (including negligence), wrongful act, interruption, 274 | deletion, defect, delay in operation or transmission, computer 275 | virus, communication line failure, theft, destruction, or 276 | unauthorized access to, alteration of, or use. 277 |
    278 |
    279 |
    280 |
    281 | Indemnification 282 |
    283 |
    290 | You are aware of this and accept responsibility for your actions 291 | while using the Site. You acknowledge that your use, misuse, or 292 | inability to use the Site or the Content, or any violation by 293 | you of these Terms, will subject Company, its affiliated 294 | companies, employees, agents, and any third-party information 295 | providers to liability for any claims, losses, expenses, 296 | damages, and costs, including, but not limited to, direct, 297 | incidental, consequential, exemplary, and indirect damages. 298 |
    299 |
    300 |
    301 |
    Contact Us
    302 |
    309 | If you have any questions about these Terms, please contact us 310 | by email contact@solicy.net 311 |
    312 |
    313 |
    314 |
    315 |
    316 |
    317 | ) 318 | } 319 | 320 | export default TermsAndConditions 321 | -------------------------------------------------------------------------------- /src/components/pages/portfolio/PortfolioIntro.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function PortfolioIntro () { 10 | const theme = useTheme() 11 | return ( 12 |
    15 | 16 |
    24 |
    25 |
    26 |
    27 |
    28 |

    35 | Portfolio 36 |

    37 |
    38 |
    42 | We prioritize the needs of our clients and offer sustainable, 43 | transparent, and highly effective collaboration prospects. Let’s 44 | explore our portfolio for a closer look. 45 |
    46 |
    47 |
    48 | 49 | 50 | 57 | 58 | {theme.palette.mode === 'dark' ? ( 59 | /icons/portfolioDark.svg 69 | ) : ( 70 | /icons/portfolio.svg 80 | )} 81 | 82 |
    83 |
    84 |
    85 |
    86 |
    87 | ) 88 | } 89 | 90 | export default PortfolioIntro 91 | -------------------------------------------------------------------------------- /src/components/pages/portfolio/PortfolioMain.js: -------------------------------------------------------------------------------- 1 | import PortfolioIntro from './PortfolioIntro' 2 | import PortfolioOurWorks from './PortfolioOurWorks' 3 | import GetInTouch from '../GetInTouch' 4 | 5 | function Portfolio () { 6 | return ( 7 |
    8 | 9 | 10 | 11 |
    12 | ) 13 | } 14 | 15 | export default Portfolio 16 | -------------------------------------------------------------------------------- /src/components/pages/services/BlockchainIntro.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | import { 3 | ImageDivSpanStyle1, 4 | ImageDivSpanSpanStyle1, 5 | ImageDivSpanSpanImgStyle2, 6 | ImageDivSpanImgStyle3 7 | } from '../../BaseCss' 8 | 9 | function BlockchainIntro () { 10 | const theme = useTheme() 11 | 12 | return ( 13 |
    14 | 15 |
    22 |
    23 |
    24 |
    25 |
    26 |

    33 | Blockchain Development 34 |

    35 |
    36 |
    40 | Solicy keeps up with the latest developments and offers a wide 41 | range of services due to the strong demand for blockchain 42 | development services in the industry. Being experts in this 43 | area, we provide services ranging from decentralized exchange 44 | (DEX) development to NFT marketplace creation. Ethereum, Solana, 45 | Cardano, Polkadot, and ATOS are among the top Blockchain 46 | platforms that we employ. 47 |
    48 |
    49 |
    50 | 51 | 52 | 59 | 60 | /icons/blockchainDark.svg 70 | 71 |
    72 |
    73 |
    74 |
    75 |
    76 | ) 77 | } 78 | 79 | export default BlockchainIntro 80 | -------------------------------------------------------------------------------- /src/components/pages/services/BlockchainMain.js: -------------------------------------------------------------------------------- 1 | import BlockchainIntro from './BlockchainIntro' 2 | import BlockchainTechStack from './BlockchainTechStack' 3 | import BlockchainOurServices from './BlockchainOurServices' 4 | import GetInTouch from '../GetInTouch' 5 | 6 | function Blockchain () { 7 | return ( 8 |
    9 | 10 | 11 | 12 | 13 |
    14 | ) 15 | } 16 | 17 | export default Blockchain 18 | -------------------------------------------------------------------------------- /src/components/pages/services/SoftwareIntro.js: -------------------------------------------------------------------------------- 1 | import { useTheme } from '@mui/system' 2 | 3 | import { 4 | ImageDivSpanStyle1, 5 | ImageDivSpanSpanStyle1, 6 | ImageDivSpanSpanImgStyle2, 7 | ImageDivSpanImgStyle3 8 | } from '../../BaseCss' 9 | 10 | function SoftwareIntro () { 11 | const theme = useTheme() 12 | 13 | return ( 14 |
    15 | 16 |
    23 |
    24 |
    25 |
    26 |
    27 |

    34 | Software Development 35 |

    36 |
    37 |
    41 | Solicy offers reliable and scalable software solutions for any 42 | operating system, browser, and device. Solicy works with you to 43 | discover exactly which features and specifications your custom 44 | software requires. We design our products to meet the unique 45 | needs and wants of each user and each stakeholder. We create 46 | comprehensive, unique software solutions that develop and change 47 | your business. 48 |
    49 |
    50 |
    51 | 52 | 53 | 60 | 61 | /icons/softwareDark.svg 71 | 72 |
    73 |
    74 |
    75 |
    76 |
    77 | ) 78 | } 79 | 80 | export default SoftwareIntro 81 | -------------------------------------------------------------------------------- /src/components/pages/services/SoftwareMain.js: -------------------------------------------------------------------------------- 1 | import SoftwareIntro from './SoftwareIntro' 2 | import SoftwareTechStack from './SoftwareTechStack' 3 | import SoftwareOurServices from './SoftwareOurServices' 4 | import GetInTouch from '../GetInTouch' 5 | 6 | function Software () { 7 | return ( 8 |
    9 | 10 | 11 | 12 | 13 |
    14 | ) 15 | } 16 | 17 | export default Software 18 | -------------------------------------------------------------------------------- /src/css/appFooter.css: -------------------------------------------------------------------------------- 1 | .footer_solicyLogo__fei9Q > span, 2 | .footer_arrowUp__zi1IU > span { 3 | box-sizing: border-box; 4 | display: inline-block; 5 | overflow: hidden; 6 | width: initial; 7 | height: initial; 8 | background: none; 9 | opacity: 1; 10 | border: 0; 11 | margin: 0; 12 | padding: 0; 13 | position: relative; 14 | max-width: 100%; 15 | } 16 | 17 | .footer_socialIncons__qmQdN .borderedIcon_iconBox__GsTQ2 > span, 18 | .footer_mobileSocialIcons__rXpGK .borderedIcon_iconBox__GsTQ2 > span, 19 | .footer_socialIncons__qmQdN .borderedIcon_iconBoxDark__J5ckL > span, 20 | .footer_mobileSocialIcons__rXpGK .borderedIcon_iconBoxDark__J5ckL > span { 21 | box-sizing: border-box; 22 | display: block; 23 | overflow: hidden; 24 | width: initial; 25 | height: initial; 26 | background: none; 27 | opacity: 1; 28 | border: 0; 29 | margin: 0; 30 | padding: 0; 31 | position: absolute; 32 | top: 0; 33 | left: 0; 34 | bottom: 0; 35 | right: 0; 36 | } 37 | 38 | .footer_footerInfoText__LURKR .borderedIcon_iconBox__GsTQ2 > span, 39 | .footer_footerInfoText__LURKR .borderedIcon_iconBoxDark__J5ckL > span { 40 | box-sizing: border-box; 41 | display: block; 42 | overflow: hidden; 43 | width: initial; 44 | height: initial; 45 | background: none; 46 | opacity: 1; 47 | border: 0px; 48 | margin: 0px; 49 | padding: 0px; 50 | position: absolute; 51 | inset: 0px; 52 | } 53 | 54 | .footer_solicyLogo__fei9Q > span > span, 55 | .footer_arrowUp__zi1IU > span > span { 56 | box-sizing: border-box; 57 | display: block; 58 | width: initial; 59 | height: initial; 60 | background: none; 61 | opacity: 1; 62 | border: 0; 63 | margin: 0; 64 | padding: 0; 65 | max-width: 100%; 66 | } 67 | 68 | .footer_footerInfoText__LURKR .borderedIcon_iconBoxDark__J5ckL > span > img, 69 | .footer_footerInfoText__LURKR .borderedIcon_iconBox__GsTQ2 > span > img { 70 | position: absolute; 71 | inset: 0px; 72 | box-sizing: border-box; 73 | padding: 0px; 74 | border: none; 75 | margin: auto; 76 | display: block; 77 | width: 0px; 78 | height: 0px; 79 | min-width: 100%; 80 | max-width: 100%; 81 | min-height: 100%; 82 | max-height: 100%; 83 | object-fit: contain; 84 | } 85 | 86 | .footer_solicyLogo__fei9Q > span > img, 87 | .footer_arrowUp__zi1IU > span > img, 88 | .footer_socialIncons__qmQdN .borderedIcon_iconBox__GsTQ2 > span > img, 89 | .footer_mobileSocialIcons__rXpGK .borderedIcon_iconBox__GsTQ2 > span > img, 90 | .footer_socialIncons__qmQdN .borderedIcon_iconBoxDark__J5ckL > span > img, 91 | .footer_mobileSocialIcons__rXpGK .borderedIcon_iconBoxDark__J5ckL > span > img { 92 | position: absolute; 93 | top: 0; 94 | left: 0; 95 | bottom: 0; 96 | right: 0; 97 | box-sizing: border-box; 98 | padding: 0; 99 | border: none; 100 | margin: auto; 101 | display: block; 102 | width: 0; 103 | height: 0; 104 | min-width: 100%; 105 | max-width: 100%; 106 | min-height: 100%; 107 | max-height: 100%; 108 | object-fit: contain; 109 | } 110 | 111 | .footer_solicyLogo__fei9Q > span > span > img, 112 | .footer_arrowUp__zi1IU > span > span > img { 113 | display: block; 114 | max-width: 100%; 115 | width: initial; 116 | height: initial; 117 | background: none; 118 | opacity: 1; 119 | border: 0; 120 | margin: 0; 121 | padding: 0; 122 | } 123 | -------------------------------------------------------------------------------- /src/css/card.css: -------------------------------------------------------------------------------- 1 | .card_container__gXG_O { 2 | height: -moz-fit-content; 3 | height: fit-content; 4 | width: 350px; 5 | padding: 40px; 6 | border-radius: 15px; 7 | background-color: var(--background-color); 8 | box-shadow: 0 4px 15px rgba(0, 0, 0, 0.04); 9 | } 10 | 11 | .card_title__Xc4qd { 12 | font-size: 24px; 13 | font-weight: 700; 14 | margin-top: 10px; 15 | z-index: 1; 16 | } 17 | 18 | .card_description__GDj3k, 19 | .card_title__Xc4qd { 20 | font-family: var(--primary-font); 21 | text-align: center; 22 | } 23 | 24 | .card_description__GDj3k { 25 | font-size: 16px; 26 | font-weight: 500; 27 | } 28 | 29 | .card_cardParts__qx2u_ { 30 | width: 100%; 31 | display: flex; 32 | justify-content: center; 33 | } 34 | -------------------------------------------------------------------------------- /src/css/cookies.css: -------------------------------------------------------------------------------- 1 | .cookiesModal_mainContainer__IOTT9 { 2 | position: fixed; 3 | bottom: 0; 4 | width: 100%; 5 | z-index: 999; 6 | display: flex; 7 | left: 0; 8 | justify-content: center; 9 | height: 130px; 10 | background: var(--cookie-background); 11 | box-shadow: 4px 0 10px hsla(0, 0%, 42%, 0.6); 12 | -moz-column-gap: 80px; 13 | column-gap: 80px; 14 | padding: 20px 0; 15 | } 16 | 17 | .cookiesModal_content__beRRV { 18 | display: flex; 19 | align-items: center; 20 | color: var(--primary-color); 21 | font-size: 18px; 22 | -moz-column-gap: 70px; 23 | column-gap: 70px; 24 | } 25 | 26 | .cookiesModal_content__beRRV .cookiesModal_textContainer__5Mm2j { 27 | display: flex; 28 | flex: 3 1; 29 | flex-direction: column; 30 | align-items: center; 31 | } 32 | 33 | .cookiesModal_content__beRRV .cookiesModal_textContainer__5Mm2j div { 34 | display: flex; 35 | flex-direction: column; 36 | } 37 | 38 | .cookiesModal_content__beRRV .cookiesModal_textContainer__5Mm2j a { 39 | text-decoration: underline; 40 | text-decoration-thickness: 1px; 41 | } 42 | 43 | .cookiesModal_buttonContainer__WY3OX { 44 | display: flex; 45 | flex-direction: row-reverse; 46 | align-items: center; 47 | -moz-column-gap: 20px; 48 | column-gap: 20px; 49 | padding-right: 20px; 50 | } 51 | 52 | .cookiesModal_buttonContainer__WY3OX .cookiesModal_declineButton__z7ejz { 53 | color: var(--primary-color) !important; 54 | font-weight: 500; 55 | font-size: 18px; 56 | line-height: 25px; 57 | border: 1px solid var(--primary-color-font); 58 | border-radius: 10px; 59 | padding: 10px 37px; 60 | } 61 | 62 | .cookiesModal_contentBlocks__7TRNL { 63 | max-width: 1050px; 64 | padding-left: 20px; 65 | display: flex; 66 | } 67 | 68 | @media (max-width: 1900px) { 69 | .cookiesModal_contentBlocks__7TRNL { 70 | max-width: 950px; 71 | } 72 | 73 | .cookiesModal_buttonContainer__WY3OX { 74 | padding-right: 110px; 75 | } 76 | } 77 | 78 | @media (max-width: 1740px) { 79 | .cookiesModal_contentBlocks__7TRNL { 80 | max-width: 900px; 81 | } 82 | 83 | .cookiesModal_buttonContainer__WY3OX { 84 | padding-right: 170px; 85 | } 86 | } 87 | 88 | @media (max-width: 1650px) { 89 | .cookiesModal_contentBlocks__7TRNL { 90 | max-width: 850px; 91 | } 92 | 93 | .cookiesModal_buttonContainer__WY3OX { 94 | padding-right: 200px; 95 | } 96 | } 97 | 98 | @media (max-width: 1550px) { 99 | .cookiesModal_contentBlocks__7TRNL { 100 | max-width: 800px; 101 | } 102 | 103 | .cookiesModal_buttonContainer__WY3OX { 104 | padding-right: 300px; 105 | } 106 | } 107 | 108 | .cookiesModal_button__Km1cY { 109 | background-color: var(--input-text-active); 110 | border-radius: 10px; 111 | width: 140px; 112 | text-align: center; 113 | display: flex; 114 | justify-content: center; 115 | padding: 10px 37px; 116 | border: none; 117 | color: var(--primary-color-white-mod); 118 | font-size: 18px; 119 | text-decoration: none; 120 | cursor: pointer; 121 | font-weight: 700; 122 | } 123 | 124 | .cookiesModal_button__Km1cY:hover { 125 | color: var(--primary-color); 126 | background-color: var(--cookie-background); 127 | box-shadow: var(--box-shadow-color); 128 | } 129 | 130 | .cookiesModal_button__Km1cY:active { 131 | box-shadow: inset var(--box-shadow-color); 132 | } 133 | 134 | .cookiesModal_declineButton__z7ejz { 135 | font-size: 18px; 136 | background-color: transparent; 137 | cursor: pointer; 138 | font-weight: 500; 139 | line-height: 25px; 140 | color: var(--primary-color); 141 | border: 1px solid var(--decline-button-border); 142 | } 143 | 144 | .cookiesModal_declineButton__z7ejz:hover { 145 | background-color: var(--decline-button-hover); 146 | } 147 | 148 | @media screen and (max-width: 1100px) { 149 | .cookiesModal_buttonContainer__WY3OX { 150 | padding-right: 0; 151 | } 152 | 153 | .cookiesModal_mainContainer__IOTT9 { 154 | flex-wrap: wrap; 155 | height: 150px; 156 | } 157 | 158 | .cookiesModal_mainContainer__IOTT9 div { 159 | -moz-column-gap: 15px; 160 | column-gap: 15px; 161 | } 162 | 163 | .cookiesModal_mainContainer__IOTT9 164 | .cookiesModal_textContainer__5Mm2j 165 | div 166 | span { 167 | font-weight: 500; 168 | font-size: 14px; 169 | line-height: 150%; 170 | } 171 | } 172 | 173 | @media screen and (max-width: 922px) { 174 | .cookiesModal_mainContainer__IOTT9 { 175 | flex-wrap: wrap; 176 | height: auto; 177 | row-gap: 15px; 178 | } 179 | } 180 | 181 | @media (max-width: 576px) { 182 | .cookiesModal_contentBlocks__7TRNL { 183 | padding: 0; 184 | } 185 | 186 | .cookiesModal_mainContainer__IOTT9 { 187 | padding: 20px; 188 | display: flex; 189 | align-items: center; 190 | flex-direction: column; 191 | } 192 | 193 | .cookiesModal_mainContainer__IOTT9 div { 194 | -moz-column-gap: 15px; 195 | column-gap: 15px; 196 | } 197 | 198 | .cookiesModal_textContainer__5Mm2j div span { 199 | font-weight: 500; 200 | font-size: 14px; 201 | line-height: 150%; 202 | } 203 | 204 | .cookiesModal_buttonContainer__WY3OX { 205 | flex-direction: column-reverse; 206 | row-gap: 12px; 207 | width: 100%; 208 | } 209 | 210 | .cookiesModal_buttonContainer__WY3OX .cookiesModal_button__Km1cY, 211 | .cookiesModal_buttonContainer__WY3OX .cookiesModal_declineButton__z7ejz { 212 | max-width: 100%; 213 | width: 100%; 214 | padding: 9px 0; 215 | font-weight: 700; 216 | font-size: 18px; 217 | line-height: 150%; 218 | } 219 | } 220 | 221 | @media (max-width: 425px) { 222 | .cookiesModal_buttonContainer__WY3OX { 223 | flex-direction: column-reverse; 224 | row-gap: 12px; 225 | width: 100%; 226 | } 227 | 228 | .cookiesModal_buttonContainer__WY3OX .cookiesModal_button__Km1cY, 229 | .cookiesModal_buttonContainer__WY3OX .cookiesModal_declineButton__z7ejz { 230 | max-width: 335px; 231 | width: 100%; 232 | padding: 9px 0; 233 | font-weight: 700; 234 | font-size: 18px; 235 | line-height: 150%; 236 | } 237 | } 238 | -------------------------------------------------------------------------------- /src/css/subTitleText.css: -------------------------------------------------------------------------------- 1 | .subTitleText_subTitle__2anJB { 2 | font-size: 32px; 3 | font-weight: 700; 4 | margin-bottom: 10px; 5 | width: 100%; 6 | } 7 | 8 | .subTitleText_subTitle__2anJB .subTitleText_subTitleText__bQxEn { 9 | font-family: var(--title-font); 10 | font-style: normal; 11 | font-weight: 700 !important; 12 | font-size: 45px !important; 13 | line-height: 150%; 14 | } 15 | 16 | .subTitleText_subTitle__2anJB div { 17 | width: 94%; 18 | line-height: normal; 19 | font-size: 32px; 20 | font-weight: 700; 21 | } 22 | 23 | .subTitleText_font32px__8WslX { 24 | font-size: 32px; 25 | } 26 | 27 | .subTitleText_font48px__lGExn { 28 | font-size: 48px; 29 | } 30 | 31 | .subTitleText_description__WoiQ_ { 32 | font-size: 24px; 33 | font-weight: 500; 34 | line-height: 30px; 35 | color: var(--font-color); 36 | width: auto; 37 | height: auto !important; 38 | } 39 | 40 | .subTitleText_subTitleMobile__UxxJ1 { 41 | display: none; 42 | font-family: Quicksand; 43 | font-style: normal; 44 | font-weight: 700; 45 | font-size: 16px; 46 | line-height: 150%; 47 | color: var(--background-color-secondary); 48 | margin: 25px 0 10px; 49 | } 50 | 51 | .subTitleText_about__Gga7C { 52 | justify-content: center; 53 | } 54 | 55 | .subTitleText_about__Gga7C span { 56 | font-weight: 700; 57 | } 58 | 59 | .subTitleText_subTitleTextColorfff__9ZpzB { 60 | color: #fff; 61 | } 62 | 63 | .subTitleText_subTitleTextColor--primary-color-white-mod__H_tOL { 64 | color: var(--primary-color-white-mod); 65 | } 66 | 67 | .subTitleText_subTitleTextColor--primary-color-font___TB5T { 68 | color: var(--light-black); 69 | } 70 | 71 | .subTitleText_subTitleTextColor--font-color__AYsIE { 72 | color: var(--font-color); 73 | } 74 | 75 | .subTitleText_subTitleTextColor--black_color__yK4GM { 76 | color: var(--black_color); 77 | } 78 | 79 | .subTitleText_subTitleTextFont32px__KXUEU { 80 | font-size: 32px !important; 81 | } 82 | 83 | .subTitleText_subTitleTextFont48px__C2PLh { 84 | font-size: 48px !important; 85 | } 86 | 87 | .subTitleText_subTitleTextFont50px__VYyHa { 88 | font-size: 50px !important; 89 | } 90 | 91 | @media screen and (max-width: 760px) { 92 | .subTitleText_about__Gga7C { 93 | justify-content: center; 94 | } 95 | 96 | .subTitleText_subTitleMobile__UxxJ1 { 97 | display: none; 98 | } 99 | 100 | .subTitleText_subTitle__2anJB .subTitleText_subTitleText__bQxEn { 101 | font-size: 32px !important; 102 | } 103 | 104 | .subTitleText_description__WoiQ_ { 105 | margin-bottom: 20px !important; 106 | } 107 | 108 | .subTitleText_subTitle__2anJB .subTitleText_subTitleText__bQxEn { 109 | margin: 0 auto; 110 | } 111 | 112 | .subTitleText_subTitleTextFont32px__KXUEU { 113 | margin: 0 !important; 114 | } 115 | } 116 | 117 | @media screen and (max-width: 480px) { 118 | .subTitleText_subTitle__2anJB .subTitleText_subTitleText__bQxEn { 119 | font-size: 24px !important; 120 | margin: 0 auto; 121 | display: flex; 122 | justify-content: center; 123 | text-align: center; 124 | } 125 | 126 | .subTitleText_subTitle__2anJB .subTitleText_subTitleMobile__UxxJ1 { 127 | display: none; 128 | } 129 | 130 | .subTitleText_description__WoiQ_ { 131 | font-size: 16px; 132 | font-weight: 500; 133 | line-height: 22px; 134 | letter-spacing: 0; 135 | text-align: center; 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /src/css/techCard.css: -------------------------------------------------------------------------------- 1 | .techCard_box__j1mN7 { 2 | transition: all 0.5s; 3 | max-width: 335px; 4 | max-height: 120px; 5 | display: flex; 6 | align-items: center; 7 | justify-content: center; 8 | -webkit-user-select: none; 9 | -moz-user-select: none; 10 | -ms-user-select: none; 11 | user-select: none; 12 | border-radius: 10px; 13 | } 14 | 15 | .techCard_box__j1mN7 img { 16 | width: 100%; 17 | height: 100%; 18 | } 19 | 20 | .techCard_imageItem__PHXmj { 21 | cursor: pointer; 22 | } 23 | 24 | @media screen and (min-width: 800px) { 25 | .techCard_box__j1mN7:hover { 26 | transition: all 0.5s; 27 | transform: scale(1.05); 28 | } 29 | } 30 | 31 | @media screen and (max-width: 850px) { 32 | .techCard_box__j1mN7 { 33 | max-height: 70px; 34 | max-width: 100%; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/fonts/Inter-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-Black.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-Bold.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-ExtraBold.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-ExtraLight.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-Light.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-Medium.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-SemiBold.ttf -------------------------------------------------------------------------------- /src/fonts/Inter-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Inter-Thin.ttf -------------------------------------------------------------------------------- /src/fonts/Quicksand-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Quicksand-Bold.ttf -------------------------------------------------------------------------------- /src/fonts/Quicksand-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Quicksand-Light.ttf -------------------------------------------------------------------------------- /src/fonts/Quicksand-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Quicksand-Medium.ttf -------------------------------------------------------------------------------- /src/fonts/Quicksand-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Quicksand-Regular.ttf -------------------------------------------------------------------------------- /src/fonts/Quicksand-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CryptoDev88/net-front/966832fc8e4eb44740798a5146ddb4a881bfb63e/src/fonts/Quicksand-SemiBold.ttf -------------------------------------------------------------------------------- /src/images/Youtube-logo-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/images/Youtube-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 5 | 'Helvetica Neue' sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import './index.css' 4 | 5 | import './css/app.css' 6 | import './css/card.css' 7 | import './css/cookies.css' 8 | import './css/schedule.css' 9 | import './css/joinCommunity.css' 10 | import './css/notification.css' 11 | import './css/subTitleText.css' 12 | import './css/techCard.css' 13 | 14 | import App from './App' 15 | import reportWebVitals from './reportWebVitals' 16 | 17 | const root = ReactDOM.createRoot(document.getElementById('root')) 18 | root.render( 19 | 20 | 21 | 22 | ) 23 | 24 | // If you want to start measuring performance in your app, pass a function 25 | // to log results (for example: reportWebVitals(console.log)) 26 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 27 | reportWebVitals() 28 | -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | --------------------------------------------------------------------------------