Compare commits

..

4 commits

5 changed files with 91 additions and 16 deletions

View file

@ -6,12 +6,13 @@ interface Props {
label?: string label?: string
value: string value: string
onChange: Setter<string> onChange: Setter<string>
onKeyDown?: (event: KeyboardEvent) => void
} }
export default (props: Props) => { export default (props: Props) => {
return ( return (
<> <>
<TextField class="text-field" value={props.value} onChange={props.onChange}> <TextField class="text-field" value={props.value} onChange={props.onChange} onKeyDown={props.onKeyDown}>
<Show when={props.label}> <Show when={props.label}>
<TextField.Label class="text-field__label">{props.label}</TextField.Label> <TextField.Label class="text-field__label">{props.label}</TextField.Label>
</Show> </Show>

View file

@ -19,14 +19,37 @@ h1
align-content: flex-start align-content: flex-start
gap: 0.5rem gap: 0.5rem
@media only screen and (max-width: views.$tablet)
display: flex
flex-direction: row
flex-wrap: wrap
justify-content: center
align-items: center
align-content: flex-start
text-align: center
gap: 0.5rem
&__main &__main
font-size: 3.25rem font-size: 3.25rem
margin: 0 1rem 0 0 margin: 0 1rem 0 0
@media only screen and (max-width: views.$tablet)
padding: 2rem 0 0 0
font-size: 2.25rem
margin: 0 1rem 0 0
&__sub &__sub
font-weight: 700 font-weight: 700
font-size: 2.75rem font-size: 2.75rem
@media only screen and (max-width: views.$tablet)
font-weight: 700
font-size: 1.75rem
&__paragraph &__paragraph
padding: 4rem 0 0 0 padding: 4rem 0 0 0
font-size: 1.25rem font-size: 1.25rem
@media only screen and (max-width: views.$tablet)
padding: 3.25rem 0 0 0
font-size: 1rem

View file

@ -75,25 +75,61 @@ export default () => {
</Column> </Column>
</Row> </Row>
</Display> </Display>
<Display mobile>
<Row>
<Logo size={200} />
<h1>OCBO e-Sign</h1>
<section class="title">
<h1 class="title__main">Secure e-Signature</h1>
<span class="title__sub">for Office of the City Building Official</span>
<p class="title__paragraph">A paperless and effortless solution on signing permits</p>
</section>
<Column gap={0.5}>
<Button wide label="Login" edges="curved" design="bo-primary" to="/login" />
<Button wide label="Register" edges="curved" design="bo-primary" to="/register" />
</Column>
</Row>
</Display>
</Padding> </Padding>
<Footer> <Display desktop tablet>
<Row content="split"> <Footer>
<Row gap={0.5}> <Row content="split">
<Image avif={ocboAvif} webp={ocboWebp} size={30}></Image> <Row gap={0.5}>
<Image avif={ocboAvif} webp={ocboWebp} size={30}></Image>
<Row gap={0.25}>
<Copyright year="2025" name="Office of the City Building Official" />
<span>Davao City, Philippines</span>
</Row>
</Row>
<Row gap={0.25}> <Row gap={0.25}>
<Copyright year="2025" name="Office of the City Building Official" /> <span>Developed by:</span>
<span>Davao City, Philippines</span> <Image avif={patAvif} webp={patWebp} size={90}></Image>
<span>Pat Alcala</span>
</Row> </Row>
</Row> </Row>
</Footer>
</Display>
<Row gap={0.25}> <Display mobile>
<span>Developed by:</span> <Footer>
<Image avif={patAvif} webp={patWebp} size={90}></Image> <Column>
<span>Pat Alcala</span> <Column gap={0.25}>
</Row> <Copyright year="2025" name="Office of the City Building Official" />
</Row> <span>Davao City, Philippines</span>
</Footer>
<Row gap={0.25}>
<span>Developed by:</span> <Image avif={patAvif} webp={patWebp} size={60}></Image>
<span>Pat Alcala</span>
</Row>
</Column>
</Column>
</Footer>
</Display>
</Page> </Page>
</> </>
) )

View file

@ -6,6 +6,7 @@ import { ofetch } from 'ofetch'
import { SHA1, SHA3 } from 'crypto-js' import { SHA1, SHA3 } from 'crypto-js'
import { useNavigate } from '@solidjs/router' import { useNavigate } from '@solidjs/router'
import { checkConnection } from '../../utils/functions' import { checkConnection } from '../../utils/functions'
import { _employeeId, _employeeName } from '../../stores/employee'
export default () => { export default () => {
const API = import.meta.env.VITE_BACKEND const API = import.meta.env.VITE_BACKEND
@ -39,6 +40,8 @@ export default () => {
} }
if (dbpassword.result === hashPassword) { if (dbpassword.result === hashPassword) {
_employeeId.set(employeeid)
_employeeName.set(name())
setLoggedin(2) setLoggedin(2)
} else { } else {
setLoggedin(1) setLoggedin(1)
@ -84,7 +87,8 @@ export default () => {
<Padding top={2} left={0} right={0} bottom={0}> <Padding top={2} left={0} right={0} bottom={0}>
<Row> <Row>
<Box curved thickness={2} padding="2rem" color="#2f465cd7" background="#04040654"> <Box curved thickness={2} padding="2.25rem" color="#2f465cd7" background="#04040660">
{/* <section class="box"> */}
<Row> <Row>
<span class="box-title">Login</span> <span class="box-title">Login</span>
</Row> </Row>
@ -102,7 +106,13 @@ export default () => {
<span class="approver-name">{APPROVERNAME}</span> <span class="approver-name">{APPROVERNAME}</span>
</Show> </Show>
<h4>Password</h4> <h4>Password</h4>
<Input value={password()} onChange={setPassword}></Input> <Input
value={password()}
onChange={setPassword}
onKeyDown={(event: KeyboardEvent) => {
if (event.key === 'Enter') login()
}}
/>
<Padding top={2} left={0} right={0} bottom={0}> <Padding top={2} left={0} right={0} bottom={0}>
<Show when={password() && name()}> <Show when={password() && name()}>
@ -129,6 +139,7 @@ export default () => {
</Row> </Row>
</Show> </Show>
</Padding> </Padding>
{/* </section> */}
</Box> </Box>
</Row> </Row>
</Padding> </Padding>

4
src/stores/employee.ts Normal file
View file

@ -0,0 +1,4 @@
import { atom } from 'nanostores'
export const _employeeId = atom(0)
export const _employeeName = atom('')