✨ Landing page
This commit is contained in:
parent
38a2d712eb
commit
650b7283d5
BIN
public/product-branding.webp
Normal file
BIN
public/product-branding.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
src/assets/products/solar-network/alpha.webp
Normal file
BIN
src/assets/products/solar-network/alpha.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 696 KiB |
BIN
src/assets/products/solar-network/labeled.webp
Normal file
BIN
src/assets/products/solar-network/labeled.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 MiB |
@ -1,15 +1,5 @@
|
|||||||
import { useUserStore } from '@/services/user'
|
import { useUserStore } from '@/services/user'
|
||||||
import {
|
import { AppBar, AppBarProps, Avatar, IconButton, Toolbar, Typography, useScrollTrigger, useTheme } from '@mui/material'
|
||||||
AppBar,
|
|
||||||
AppBarProps,
|
|
||||||
Avatar,
|
|
||||||
IconButton,
|
|
||||||
Toolbar,
|
|
||||||
Typography,
|
|
||||||
useMediaQuery,
|
|
||||||
useScrollTrigger,
|
|
||||||
useTheme,
|
|
||||||
} from '@mui/material'
|
|
||||||
import { getAttachmentUrl } from '@/services/network'
|
import { getAttachmentUrl } from '@/services/network'
|
||||||
import MenuIcon from '@mui/icons-material/Menu'
|
import MenuIcon from '@mui/icons-material/Menu'
|
||||||
import AccountCircle from '@mui/icons-material/AccountCircle'
|
import AccountCircle from '@mui/icons-material/AccountCircle'
|
||||||
@ -17,14 +7,12 @@ import Link from 'next/link'
|
|||||||
import React, { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
import { CapDrawer } from './CapDrawer'
|
import { CapDrawer } from './CapDrawer'
|
||||||
|
|
||||||
interface ElevationAppBarProps {
|
interface AppBarScrollProps {
|
||||||
elevation?: number
|
elevation?: number
|
||||||
color?: any
|
|
||||||
isMobile: boolean
|
|
||||||
children?: React.ReactElement<{ elevation?: number } & AppBarProps>
|
children?: React.ReactElement<{ elevation?: number } & AppBarProps>
|
||||||
}
|
}
|
||||||
|
|
||||||
function ElevationScroll(props: ElevationAppBarProps) {
|
function AppBarScroll(props: AppBarScrollProps) {
|
||||||
if (typeof window === 'undefined') return props.children
|
if (typeof window === 'undefined') return props.children
|
||||||
|
|
||||||
const trigger = useScrollTrigger({
|
const trigger = useScrollTrigger({
|
||||||
@ -41,9 +29,7 @@ function ElevationScroll(props: ElevationAppBarProps) {
|
|||||||
return props.children
|
return props.children
|
||||||
? React.cloneElement(props.children, {
|
? React.cloneElement(props.children, {
|
||||||
elevation: trigger ? props.elevation : 0,
|
elevation: trigger ? props.elevation : 0,
|
||||||
sx: trigger
|
sx: trigger ? { borderBottom: 1, borderColor: 'divider', ...commonStyle } : { ...commonStyle },
|
||||||
? { backgroundColor: props.color, color: 'black', ...commonStyle }
|
|
||||||
: { backgroundColor: 'transparent', ...commonStyle },
|
|
||||||
})
|
})
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
@ -52,8 +38,6 @@ export function CapAppBar() {
|
|||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
|
|
||||||
const isMobile = useMediaQuery(theme.breakpoints.down('md'))
|
|
||||||
|
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
|
|
||||||
const drawerWidth = 280
|
const drawerWidth = 280
|
||||||
@ -62,16 +46,8 @@ export function CapAppBar() {
|
|||||||
<>
|
<>
|
||||||
<CapDrawer width={drawerWidth} open={open} onClose={() => setOpen(false)} />
|
<CapDrawer width={drawerWidth} open={open} onClose={() => setOpen(false)} />
|
||||||
|
|
||||||
<ElevationScroll isMobile={isMobile} elevation={2} color="white">
|
<AppBarScroll elevation={0}>
|
||||||
<AppBar
|
<AppBar position="sticky" elevation={0} color="transparent" className="backdrop-blur-md">
|
||||||
position="sticky"
|
|
||||||
elevation={0}
|
|
||||||
color="transparent"
|
|
||||||
sx={{
|
|
||||||
width: isMobile ? null : `calc(100% - ${drawerWidth}`,
|
|
||||||
marginLeft: isMobile ? null : `${drawerWidth}px`,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Toolbar>
|
<Toolbar>
|
||||||
<IconButton
|
<IconButton
|
||||||
size="large"
|
size="large"
|
||||||
@ -108,7 +84,7 @@ export function CapAppBar() {
|
|||||||
</Link>
|
</Link>
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
</AppBar>
|
</AppBar>
|
||||||
</ElevationScroll>
|
</AppBarScroll>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ export default function App({ Component, pageProps }: AppProps) {
|
|||||||
<style jsx global>{`
|
<style jsx global>{`
|
||||||
html {
|
html {
|
||||||
font-family: ${fontRoboto.style.fontFamily};
|
font-family: ${fontRoboto.style.fontFamily};
|
||||||
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
|
|
||||||
|
@ -1,14 +1,116 @@
|
|||||||
import { Container, Typography } from '@mui/material'
|
import { Box, Chip, Container, Grid2 as Grid, Link, Paper, Typography } from '@mui/material'
|
||||||
|
import { Roboto_Serif } from 'next/font/google'
|
||||||
|
import NextLink from 'next/link'
|
||||||
|
import Image from 'next/image'
|
||||||
|
|
||||||
|
import StarIcon from '@mui/icons-material/Star'
|
||||||
|
import ArrowForward from '@mui/icons-material/ArrowForward'
|
||||||
|
import ArrowDownward from '@mui/icons-material/ArrowDownward'
|
||||||
|
import LaunchIcon from '@mui/icons-material/Launch'
|
||||||
|
|
||||||
|
import ImgSolarNetworkLabeled from '@/assets/products/solar-network/labeled.webp'
|
||||||
|
|
||||||
|
const fontSerif = Roboto_Serif({
|
||||||
|
subsets: ['latin'],
|
||||||
|
weight: ['300'],
|
||||||
|
display: 'swap',
|
||||||
|
style: 'italic',
|
||||||
|
})
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
return (
|
return (
|
||||||
<main>
|
<>
|
||||||
<Container sx={{ pt: 5 }}>
|
<Container sx={{ py: 24, display: 'flex', flexDirection: 'column', gap: 32 }}>
|
||||||
<Typography variant="h3" component="h1">
|
<Box>
|
||||||
|
<Image src="/logo.png" width={128} height={128} alt="company logo" className="mb-2" />
|
||||||
|
<Typography variant="h3" component="h1" gutterBottom>
|
||||||
Welcome to <br />
|
Welcome to <br />
|
||||||
the Solsynth Capital.
|
the Solsynth Capital.
|
||||||
</Typography>
|
</Typography>
|
||||||
|
<Typography variant="body1" fontSize={20} sx={{ mb: 2 }}>
|
||||||
|
A vibrant creating wonderful software and hope the future will be brighter.
|
||||||
|
</Typography>
|
||||||
|
|
||||||
|
<Link href="#products">
|
||||||
|
Explore our works
|
||||||
|
<ArrowDownward sx={{ fontSize: 15, marginLeft: 0.5 }} />
|
||||||
|
</Link>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
<Box id="products">
|
||||||
|
<Grid container columns={{ xs: 1, sm: 1, md: 2 }} spacing={4}>
|
||||||
|
<Grid size={1}>
|
||||||
|
<Chip
|
||||||
|
label="Featured Project"
|
||||||
|
variant="outlined"
|
||||||
|
icon={<StarIcon sx={{ fontSize: 18 }} />}
|
||||||
|
sx={{ px: 1, mb: 2 }}
|
||||||
|
/>
|
||||||
|
<Typography variant="h4" component="h2">
|
||||||
|
Solar Network
|
||||||
|
</Typography>
|
||||||
|
<Typography variant="body1" fontSize={16} sx={{ mb: 2 }}>
|
||||||
|
The next generation social network. But not only a social media.
|
||||||
|
</Typography>
|
||||||
|
|
||||||
|
<Typography
|
||||||
|
variant="subtitle1"
|
||||||
|
fontSize={26}
|
||||||
|
fontFamily={fontSerif.style.fontFamily}
|
||||||
|
sx={{ mb: 2, width: 'fit-content', fontStyle: 'italic' }}
|
||||||
|
className="textmarker-effect active"
|
||||||
|
>
|
||||||
|
Social Network, Redefined.
|
||||||
|
</Typography>
|
||||||
|
|
||||||
|
<NextLink passHref href="/products/solar-network">
|
||||||
|
<Link component="span">
|
||||||
|
Explore more you can do with Solar Network
|
||||||
|
<ArrowForward sx={{ fontSize: 15, marginLeft: 0.5 }} />
|
||||||
|
</Link>
|
||||||
|
</NextLink>
|
||||||
|
</Grid>
|
||||||
|
<Grid size={1}>
|
||||||
|
<Paper sx={{ position: 'relative', aspectRatio: 16 / 10, width: '100%' }}>
|
||||||
|
<Image
|
||||||
|
src={ImgSolarNetworkLabeled}
|
||||||
|
alt="solian the app preview"
|
||||||
|
fill
|
||||||
|
style={{ objectFit: 'cover', borderRadius: '8px' }}
|
||||||
|
/>
|
||||||
|
</Paper>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
<Box id="production">
|
||||||
|
<Grid container columns={{ xs: 1, sm: 1, md: 2 }} spacing={4}>
|
||||||
|
<Grid size={1}>
|
||||||
|
<Image
|
||||||
|
src="/product-branding.webp"
|
||||||
|
alt="product branding mark"
|
||||||
|
width={256}
|
||||||
|
height={80}
|
||||||
|
style={{ marginLeft: '-20px' }}
|
||||||
|
/>
|
||||||
|
<Typography variant="h4" component="h2" sx={{ my: 2 }}>
|
||||||
|
Made by Solsynth
|
||||||
|
</Typography>
|
||||||
|
<Typography variant="body1" sx={{ mb: 2 }}>
|
||||||
|
There are a lot of other great projects was made by Solsynth, and most of them are open sourced. You can
|
||||||
|
check them on our GitHub organization.
|
||||||
|
</Typography>
|
||||||
|
|
||||||
|
<NextLink passHref href="https://www.github.com/Solsynth" target="_blank">
|
||||||
|
<Link component="span">
|
||||||
|
Check out our GitHub page
|
||||||
|
<LaunchIcon sx={{ fontSize: 15, marginLeft: 0.5 }} />
|
||||||
|
</Link>
|
||||||
|
</NextLink>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Box>
|
||||||
</Container>
|
</Container>
|
||||||
</main>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,38 @@
|
|||||||
@tailwind base;
|
@tailwind base;
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
|
.textmarker-effect {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.textmarker-effect:before {
|
||||||
|
position: absolute;
|
||||||
|
z-index: -1;
|
||||||
|
content: '';
|
||||||
|
background: var(--mui-palette-primary-main);
|
||||||
|
height: 20px;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 0%;
|
||||||
|
opacity: 0.5;
|
||||||
|
transition: all 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.textmarker-effect:hover:before {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.textmarker-effect.active:before {
|
||||||
|
animation: textmarker-effect-animation 0.5s ease-in-out;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes textmarker-effect-animation {
|
||||||
|
0% {
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user