supporiting documents uploaded. One step away from starting development.
This commit is contained in:
0
src/frontend/pages/__init__.py
Normal file
0
src/frontend/pages/__init__.py
Normal file
164
src/frontend/pages/auth.py
Normal file
164
src/frontend/pages/auth.py
Normal file
@@ -0,0 +1,164 @@
|
||||
from dash import html, dcc
|
||||
import dash_mantine_components as dmc
|
||||
from dash_iconify import DashIconify
|
||||
|
||||
def create_login_page():
|
||||
return dmc.Container(
|
||||
size="xs",
|
||||
style={"marginTop": "10vh"},
|
||||
children=[
|
||||
dmc.Paper(
|
||||
shadow="lg",
|
||||
radius="md",
|
||||
p="xl",
|
||||
children=[
|
||||
dmc.Group(
|
||||
position="center",
|
||||
mb="xl",
|
||||
children=[
|
||||
DashIconify(
|
||||
icon="tabler:briefcase",
|
||||
width=40,
|
||||
color="#228BE6"
|
||||
),
|
||||
dmc.Title("Job Forge", order=2, color="blue")
|
||||
]
|
||||
),
|
||||
|
||||
dmc.Tabs(
|
||||
id="auth-tabs",
|
||||
value="login",
|
||||
children=[
|
||||
dmc.TabsList(
|
||||
grow=True,
|
||||
children=[
|
||||
dmc.Tab("Login", value="login"),
|
||||
dmc.Tab("Register", value="register")
|
||||
]
|
||||
),
|
||||
|
||||
dmc.TabsPanel(
|
||||
value="login",
|
||||
children=[
|
||||
html.Form(
|
||||
id="login-form",
|
||||
children=[
|
||||
dmc.TextInput(
|
||||
id="login-email",
|
||||
label="Email",
|
||||
placeholder="your.email@example.com",
|
||||
icon=DashIconify(icon="tabler:mail"),
|
||||
required=True,
|
||||
mb="md"
|
||||
),
|
||||
dmc.PasswordInput(
|
||||
id="login-password",
|
||||
label="Password",
|
||||
placeholder="Your password",
|
||||
icon=DashIconify(icon="tabler:lock"),
|
||||
required=True,
|
||||
mb="xl"
|
||||
),
|
||||
dmc.Button(
|
||||
"Login",
|
||||
id="login-submit",
|
||||
fullWidth=True,
|
||||
leftIcon=DashIconify(icon="tabler:login")
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
|
||||
dmc.TabsPanel(
|
||||
value="register",
|
||||
children=[
|
||||
html.Form(
|
||||
id="register-form",
|
||||
children=[
|
||||
dmc.Group(
|
||||
grow=True,
|
||||
children=[
|
||||
dmc.TextInput(
|
||||
id="register-first-name",
|
||||
label="First Name",
|
||||
placeholder="John",
|
||||
required=True,
|
||||
style={"flex": 1}
|
||||
),
|
||||
dmc.TextInput(
|
||||
id="register-last-name",
|
||||
label="Last Name",
|
||||
placeholder="Doe",
|
||||
required=True,
|
||||
style={"flex": 1}
|
||||
)
|
||||
]
|
||||
),
|
||||
dmc.TextInput(
|
||||
id="register-email",
|
||||
label="Email",
|
||||
placeholder="your.email@example.com",
|
||||
icon=DashIconify(icon="tabler:mail"),
|
||||
required=True,
|
||||
mt="md"
|
||||
),
|
||||
dmc.TextInput(
|
||||
id="register-phone",
|
||||
label="Phone (Optional)",
|
||||
placeholder="+1 (555) 123-4567",
|
||||
icon=DashIconify(icon="tabler:phone"),
|
||||
mt="md"
|
||||
),
|
||||
dmc.PasswordInput(
|
||||
id="register-password",
|
||||
label="Password",
|
||||
placeholder="Your password",
|
||||
icon=DashIconify(icon="tabler:lock"),
|
||||
required=True,
|
||||
mt="md"
|
||||
),
|
||||
dmc.PasswordInput(
|
||||
id="register-password-confirm",
|
||||
label="Confirm Password",
|
||||
placeholder="Confirm your password",
|
||||
icon=DashIconify(icon="tabler:lock"),
|
||||
required=True,
|
||||
mt="md",
|
||||
mb="xl"
|
||||
),
|
||||
dmc.Button(
|
||||
"Register",
|
||||
id="register-submit",
|
||||
fullWidth=True,
|
||||
leftIcon=DashIconify(icon="tabler:user-plus")
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
|
||||
html.Div(id="auth-alerts", style={"marginTop": "1rem"})
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
def create_logout_confirmation():
|
||||
return dmc.Modal(
|
||||
title="Confirm Logout",
|
||||
id="logout-modal",
|
||||
children=[
|
||||
dmc.Text("Are you sure you want to logout?"),
|
||||
dmc.Group(
|
||||
position="right",
|
||||
mt="md",
|
||||
children=[
|
||||
dmc.Button("Cancel", id="logout-cancel", variant="outline"),
|
||||
dmc.Button("Logout", id="logout-confirm", color="red")
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
185
src/frontend/pages/home.py
Normal file
185
src/frontend/pages/home.py
Normal file
@@ -0,0 +1,185 @@
|
||||
from dash import html
|
||||
import dash_mantine_components as dmc
|
||||
from dash_iconify import DashIconify
|
||||
|
||||
def create_home_page():
|
||||
return dmc.Container(
|
||||
size="xl",
|
||||
pt="md",
|
||||
children=[
|
||||
dmc.Title("Welcome to Job Forge", order=1, mb="lg"),
|
||||
|
||||
dmc.Grid(
|
||||
children=[
|
||||
dmc.Col(
|
||||
dmc.Card(
|
||||
children=[
|
||||
dmc.Group(
|
||||
children=[
|
||||
DashIconify(
|
||||
icon="tabler:search",
|
||||
width=40,
|
||||
color="#228BE6"
|
||||
),
|
||||
dmc.Stack(
|
||||
spacing=5,
|
||||
children=[
|
||||
dmc.Text("Find Jobs", weight=600, size="lg"),
|
||||
dmc.Text(
|
||||
"Search and discover job opportunities",
|
||||
size="sm",
|
||||
color="dimmed"
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
dmc.Button(
|
||||
"Search Jobs",
|
||||
fullWidth=True,
|
||||
mt="md",
|
||||
id="home-search-jobs-btn"
|
||||
)
|
||||
],
|
||||
withBorder=True,
|
||||
shadow="sm",
|
||||
radius="md",
|
||||
p="lg"
|
||||
),
|
||||
span=6
|
||||
),
|
||||
|
||||
dmc.Col(
|
||||
dmc.Card(
|
||||
children=[
|
||||
dmc.Group(
|
||||
children=[
|
||||
DashIconify(
|
||||
icon="tabler:briefcase",
|
||||
width=40,
|
||||
color="#40C057"
|
||||
),
|
||||
dmc.Stack(
|
||||
spacing=5,
|
||||
children=[
|
||||
dmc.Text("Track Applications", weight=600, size="lg"),
|
||||
dmc.Text(
|
||||
"Manage your job applications",
|
||||
size="sm",
|
||||
color="dimmed"
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
dmc.Button(
|
||||
"View Applications",
|
||||
fullWidth=True,
|
||||
mt="md",
|
||||
color="green",
|
||||
id="home-applications-btn"
|
||||
)
|
||||
],
|
||||
withBorder=True,
|
||||
shadow="sm",
|
||||
radius="md",
|
||||
p="lg"
|
||||
),
|
||||
span=6
|
||||
),
|
||||
|
||||
dmc.Col(
|
||||
dmc.Card(
|
||||
children=[
|
||||
dmc.Group(
|
||||
children=[
|
||||
DashIconify(
|
||||
icon="tabler:file-text",
|
||||
width=40,
|
||||
color="#FD7E14"
|
||||
),
|
||||
dmc.Stack(
|
||||
spacing=5,
|
||||
children=[
|
||||
dmc.Text("AI Documents", weight=600, size="lg"),
|
||||
dmc.Text(
|
||||
"Generate resumes and cover letters",
|
||||
size="sm",
|
||||
color="dimmed"
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
dmc.Button(
|
||||
"Create Documents",
|
||||
fullWidth=True,
|
||||
mt="md",
|
||||
color="orange",
|
||||
id="home-documents-btn"
|
||||
)
|
||||
],
|
||||
withBorder=True,
|
||||
shadow="sm",
|
||||
radius="md",
|
||||
p="lg"
|
||||
),
|
||||
span=6
|
||||
),
|
||||
|
||||
dmc.Col(
|
||||
dmc.Card(
|
||||
children=[
|
||||
dmc.Group(
|
||||
children=[
|
||||
DashIconify(
|
||||
icon="tabler:user",
|
||||
width=40,
|
||||
color="#BE4BDB"
|
||||
),
|
||||
dmc.Stack(
|
||||
spacing=5,
|
||||
children=[
|
||||
dmc.Text("Profile", weight=600, size="lg"),
|
||||
dmc.Text(
|
||||
"Manage your profile and settings",
|
||||
size="sm",
|
||||
color="dimmed"
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
dmc.Button(
|
||||
"Edit Profile",
|
||||
fullWidth=True,
|
||||
mt="md",
|
||||
color="violet",
|
||||
id="home-profile-btn"
|
||||
)
|
||||
],
|
||||
withBorder=True,
|
||||
shadow="sm",
|
||||
radius="md",
|
||||
p="lg"
|
||||
),
|
||||
span=6
|
||||
)
|
||||
],
|
||||
gutter="md"
|
||||
),
|
||||
|
||||
dmc.Divider(my="xl"),
|
||||
|
||||
dmc.Title("Recent Activity", order=2, mb="md"),
|
||||
dmc.Card(
|
||||
children=[
|
||||
dmc.Text("No recent activity yet. Start by searching for jobs or uploading your resume!")
|
||||
],
|
||||
withBorder=True,
|
||||
shadow="sm",
|
||||
radius="md",
|
||||
p="lg"
|
||||
)
|
||||
]
|
||||
)
|
||||
Reference in New Issue
Block a user