revert(helper_fun): made web app unstabel
This commit is contained in:
parent
4d1e45359c
commit
b79c109876
@ -84,6 +84,8 @@
|
|||||||
width: var(--img-height);
|
width: var(--img-height);
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
|
background-color: transparent;
|
||||||
|
filter: invert() hue-rotate(180deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 430px) {
|
@media only screen and (max-width: 430px) {
|
||||||
|
@ -3,7 +3,10 @@ footer {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
background-color: #d3d3d3;
|
background-color: var(--card-background-color);
|
||||||
|
border-radius: var(--card-border-radius);
|
||||||
|
|
||||||
|
/* background-color: #d3d3d3; */
|
||||||
}
|
}
|
||||||
|
|
||||||
footer div {
|
footer div {
|
||||||
@ -15,14 +18,13 @@ footer div {
|
|||||||
|
|
||||||
footer img {
|
footer img {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
|
filter: invert() hue-rotate(180deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
footer a {
|
footer a {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
border: 1px solid lightgray;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,9 @@
|
|||||||
.project-title-info img {
|
.project-title-info img {
|
||||||
height: var(--img-width);
|
height: var(--img-width);
|
||||||
width: var(--img-height);
|
width: var(--img-height);
|
||||||
padding: 1svh 0px;
|
margin: 1svh 6px;
|
||||||
|
padding: 0px;
|
||||||
|
filter: invert() hue-rotate(180deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-title-info div {
|
.project-title-info div {
|
||||||
@ -88,5 +90,6 @@
|
|||||||
aspect-ratio: 1;
|
aspect-ratio: 1;
|
||||||
height: var(--img-width);
|
height: var(--img-width);
|
||||||
width: var(--img-height);
|
width: var(--img-height);
|
||||||
|
|
||||||
/* flex: 0 1 19%; */
|
/* flex: 0 1 19%; */
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
flex: 0 1 70px;
|
flex: 0 1 70px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
padding: 0px 0svw;
|
padding: 0px 0.5svw;
|
||||||
padding-top: 2svh;
|
padding-top: 2svh;
|
||||||
padding-bottom: 0.5svh;
|
padding-bottom: 0.5svh;
|
||||||
background-color: var(--card-background-color);
|
background-color: var(--card-background-color);
|
||||||
|
@ -4,8 +4,8 @@ use dioxus::prelude::*;
|
|||||||
const TECHS_CSS: Asset = asset!("/assets/styling/techs.css");
|
const TECHS_CSS: Asset = asset!("/assets/styling/techs.css");
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn TechCard(tech_props: &'static str) -> Element {
|
pub fn TechCard(tech_props: &'static str, high_skill: bool, low_skill: bool) -> Element {
|
||||||
let props_tech = tech_table_lookup(tech_props);
|
let props_tech = tech_table_lookup(tech_props, high_skill, low_skill);
|
||||||
|
|
||||||
rsx! {
|
rsx! {
|
||||||
a { class: "tech-card", href: "{props_tech.project_site}",
|
a { class: "tech-card", href: "{props_tech.project_site}",
|
||||||
@ -24,7 +24,11 @@ pub fn TechCat(cat: &'static str, tech_vec: Vec<&'static str>) -> Element {
|
|||||||
h3 { "{cat}" }
|
h3 { "{cat}" }
|
||||||
div { class: "tech-row",
|
div { class: "tech-row",
|
||||||
for tech in tech_vec {
|
for tech in tech_vec {
|
||||||
TechCard { tech_props: tech }
|
TechCard {
|
||||||
|
tech_props: tech,
|
||||||
|
high_skill: true,
|
||||||
|
low_skill: false,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn get_tech_logos_from_str(used_tech: &'static str) -> Element {
|
pub fn get_tech_logos_from_str(used_tech: &'static str) -> Element {
|
||||||
let raw_data: TechDes = tech_table_lookup(used_tech);
|
let raw_data: TechDes = tech_table_lookup(used_tech, false, false);
|
||||||
rsx! {
|
rsx! {
|
||||||
img { src: "{raw_data.tech_logo}", alt: "{used_tech}'s logo/icon" }
|
img { src: "{raw_data.tech_logo}", alt: "{used_tech}'s logo/icon" }
|
||||||
}
|
}
|
||||||
@ -25,193 +25,208 @@ pub struct ProjectDes {
|
|||||||
project_des: &'static str,
|
project_des: &'static str,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn tech_table_lookup(to_lookup: &str) -> TechDes {
|
pub fn tech_table_lookup(to_lookup: &str, high_skill: bool, low_skill: bool) -> TechDes {
|
||||||
let techs_tools_frameworks_lookup = HashMap::from([
|
let techs_tools_frameworks_lookup = techs_tools_frameworks_lookup_create();
|
||||||
(
|
if !high_skill && !low_skill {
|
||||||
|
return techs_tools_frameworks_lookup[to_lookup];
|
||||||
|
} else {
|
||||||
|
return TechDes {
|
||||||
|
tech_logo: "https://www.svgrepo.com/show/374056/rust.svg",
|
||||||
|
project_site: "https://www.rust-lang.org",
|
||||||
|
skill_level: 60,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn techs_tools_frameworks_lookup_create() -> HashMap<&'static str, TechDes> {
|
||||||
|
let mut techs_tools_frameworks_lookup = HashMap::new();
|
||||||
|
{
|
||||||
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Rust",
|
"Rust",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/374056/rust.svg",
|
tech_logo: "https://www.svgrepo.com/show/374056/rust.svg",
|
||||||
project_site: "https://www.rust-lang.org",
|
project_site: "https://www.rust-lang.org",
|
||||||
skill_level: 40,
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
|
||||||
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Python",
|
"Python",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452091/python.svg",
|
tech_logo: "https://www.svgrepo.com/show/452091/python.svg",
|
||||||
project_site: "https://www.python.org",
|
project_site: "https://www.python.org",
|
||||||
skill_level: 50,
|
skill_level: 50,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"JavaScript",
|
"JavaScript",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/303206/javascript-logo.svg",
|
tech_logo: "https://www.svgrepo.com/show/303206/javascript-logo.svg",
|
||||||
project_site: "https://www.python.org",
|
project_site: "https://www.python.org",
|
||||||
skill_level: 60,
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"YAML",
|
"YAML",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://yaml.org/favicon.svg",
|
tech_logo: "https://yaml.org/favicon.svg",
|
||||||
project_site: "https://yaml.org",
|
project_site: "https://yaml.org",
|
||||||
skill_level: 95,
|
skill_level: 95,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"C",
|
"C",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.c-language.org/logo.svg",
|
tech_logo: "https://www.c-language.org/logo.svg",
|
||||||
project_site: "https://www.c-language.org",
|
project_site: "https://www.c-language.org",
|
||||||
skill_level: 30,
|
skill_level: 30,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"C++",
|
"C++",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452183/cpp.svg",
|
tech_logo: "https://www.svgrepo.com/show/452183/cpp.svg",
|
||||||
project_site: "https://cplusplus.com",
|
project_site: "https://cplusplus.com",
|
||||||
skill_level: 30,
|
skill_level: 30,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Github",
|
"Github",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/512317/github-142.svg",
|
tech_logo: "https://www.svgrepo.com/show/512317/github-142.svg",
|
||||||
project_site: "https://github.com/darkicewolf50",
|
project_site: "https://github.com/darkicewolf50",
|
||||||
skill_level: 80,
|
skill_level: 80,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Email",
|
"Email",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/491226/email.svg",
|
tech_logo: "https://www.svgrepo.com/show/491226/email.svg",
|
||||||
project_site: "mailto:darkicewolf50@gmail.com",
|
project_site: "mailto:darkicewolf50@gmail.com",
|
||||||
skill_level: 100,
|
skill_level: 100,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"LinkedIn",
|
"LinkedIn",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/521725/linkedin.svg",
|
tech_logo: "https://www.svgrepo.com/show/521725/linkedin.svg",
|
||||||
project_site: "https://www.linkedin.com/in/brock-tomlinson/",
|
project_site: "https://www.linkedin.com/in/brock-tomlinson/",
|
||||||
skill_level: 40,
|
skill_level: 40,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Twitch",
|
"Twitch",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/519925/twitch.svg",
|
tech_logo: "https://www.svgrepo.com/show/519925/twitch.svg",
|
||||||
project_site: "https://www.twitch.tv/darkicewolf50",
|
project_site: "https://www.twitch.tv/darkicewolf50",
|
||||||
skill_level: 60,
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Youtube",
|
"Youtube",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/521936/youtube.svg",
|
tech_logo: "https://www.svgrepo.com/show/521936/youtube.svg",
|
||||||
project_site: "https://www.youtube.com/@darkicewolf50",
|
project_site: "https://www.youtube.com/@darkicewolf50",
|
||||||
skill_level: 40,
|
skill_level: 40,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Internet",
|
"Internet",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/490809/internet.svg",
|
tech_logo: "https://www.svgrepo.com/show/490809/internet.svg",
|
||||||
project_site: "https://google.com",
|
project_site: "https://google.com",
|
||||||
skill_level: 99,
|
skill_level: 99,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"React",
|
"React",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452092/react.svg",
|
tech_logo: "https://www.svgrepo.com/show/452092/react.svg",
|
||||||
project_site: "https://react.dev",
|
project_site: "https://react.dev",
|
||||||
skill_level: 60,
|
skill_level: 70,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Docker",
|
"Docker",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/448221/docker.svg",
|
tech_logo: "https://www.svgrepo.com/show/448221/docker.svg",
|
||||||
project_site: "https://www.docker.com",
|
project_site: "https://www.docker.com",
|
||||||
skill_level: 70,
|
skill_level: 70,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"FastAPI",
|
"FastAPI",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://fastapi.tiangolo.com/img/favicon.png",
|
tech_logo: "https://fastapi.tiangolo.com/img/favicon.png",
|
||||||
project_site: "https://fastapi.tiangolo.com",
|
project_site: "https://fastapi.tiangolo.com",
|
||||||
skill_level: 80,
|
skill_level: 80,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Actix",
|
"Actix",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://actix.rs/img/logo.png",
|
tech_logo: "https://actix.rs/img/logo.png",
|
||||||
project_site: "https://actix.rs",
|
project_site: "https://actix.rs",
|
||||||
skill_level: 20,
|
skill_level: 20,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"HTML5",
|
"HTML5",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452228/html-5.svg",
|
tech_logo: "https://www.svgrepo.com/show/452228/html-5.svg",
|
||||||
project_site: "https://google.com",
|
project_site: "https://google.com",
|
||||||
skill_level: 90,
|
skill_level: 90,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"CSS",
|
"CSS",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452185/css-3.svg",
|
tech_logo: "https://www.svgrepo.com/show/452185/css-3.svg",
|
||||||
project_site: "https://google.com",
|
project_site: "https://google.com",
|
||||||
skill_level: 40,
|
skill_level: 65,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Git",
|
"Git",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452210/git.svg",
|
tech_logo: "https://www.svgrepo.com/show/452210/git.svg",
|
||||||
project_site: "https://git-scm.com",
|
project_site: "https://git-scm.com",
|
||||||
skill_level: 50,
|
skill_level: 55,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Github Actions",
|
"Github Actions",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://cdn.simpleicons.org/githubactions/2088FF",
|
tech_logo: "https://cdn.simpleicons.org/githubactions/2088FF",
|
||||||
project_site: "https://github.com/",
|
project_site: "https://github.com/",
|
||||||
skill_level: 40,
|
skill_level: 50,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Vs Code",
|
"Vs Code",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/452129/vs-code.svg",
|
tech_logo: "https://www.svgrepo.com/show/452129/vs-code.svg",
|
||||||
project_site: "https://code.visualstudio.com",
|
project_site: "https://code.visualstudio.com",
|
||||||
skill_level: 60,
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Gitea",
|
"Gitea",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://about.gitea.com/gitea.png",
|
tech_logo: "https://about.gitea.com/gitea.png",
|
||||||
project_site: "https://about.gitea.com",
|
project_site: "https://about.gitea.com",
|
||||||
skill_level: 85,
|
skill_level: 85,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"AWS",
|
"AWS",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/448266/aws.svg",
|
tech_logo: "https://www.svgrepo.com/show/448266/aws.svg",
|
||||||
project_site: "https://aws.amazon.com",
|
project_site: "https://aws.amazon.com",
|
||||||
skill_level: 30,
|
skill_level: 30,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Firefox",
|
"Firefox",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo:
|
tech_logo:
|
||||||
@ -219,130 +234,127 @@ pub fn tech_table_lookup(to_lookup: &str) -> TechDes {
|
|||||||
project_site: "https://www.mozilla.org/en-CA/firefox/developer/",
|
project_site: "https://www.mozilla.org/en-CA/firefox/developer/",
|
||||||
skill_level: 80,
|
skill_level: 80,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Markdown",
|
"Markdown",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/510065/markdown.svg",
|
tech_logo: "https://www.svgrepo.com/show/510065/markdown.svg",
|
||||||
project_site: "https://www.markdownguide.org",
|
project_site: "https://www.markdownguide.org",
|
||||||
skill_level: 90,
|
skill_level: 90,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Prettier",
|
"Prettier",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://prettier.io/icon.png
|
tech_logo: "https://prettier.io/icon.png",
|
||||||
",
|
|
||||||
project_site: "https://prettier.io",
|
project_site: "https://prettier.io",
|
||||||
skill_level: 90,
|
skill_level: 90,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"DynamoDB",
|
"DynamoDB",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/473526/amazondynamodb.svg",
|
tech_logo: "https://www.svgrepo.com/show/473526/amazondynamodb.svg",
|
||||||
project_site: "https://aws.amazon.com/dynamodb/",
|
project_site: "https://aws.amazon.com/dynamodb/",
|
||||||
skill_level: 20,
|
skill_level: 70,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Cloudflare",
|
"Cloudflare",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://qualified-production.s3.us-east-1.amazonaws.com/uploads/3b522ef84c409e4457032e4b4e3b984abbc92522c6f100f4ccc55c0ccfd3062b.png",
|
tech_logo: "https://qualified-production.s3.us-east-1.amazonaws.com/uploads/3b522ef84c409e4457032e4b4e3b984abbc92522c6f100f4ccc55c0ccfd3062b.png",
|
||||||
project_site: "https://www.cloudflare.com/en-ca/",
|
project_site: "https://www.cloudflare.com/en-ca/",
|
||||||
skill_level: 35,
|
skill_level: 65,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Netlify",
|
"Netlify",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://qualified-production.s3.us-east-1.amazonaws.com/uploads/0f63ae7280d8d193e346973a1915bf99aea8c63e254eb062bad0bde99b43a9b7.png",
|
tech_logo: "https://qualified-production.s3.us-east-1.amazonaws.com/uploads/0f63ae7280d8d193e346973a1915bf99aea8c63e254eb062bad0bde99b43a9b7.png",
|
||||||
project_site: "https://www.netlify.com",
|
project_site: "https://www.netlify.com",
|
||||||
skill_level: 34,
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Vercel",
|
"Vercel",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/361653/vercel-logo.svg",
|
tech_logo: "https://www.svgrepo.com/show/361653/vercel-logo.svg",
|
||||||
project_site: "https://vercel.com/home",
|
project_site: "https://vercel.com/home",
|
||||||
skill_level: 30
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
(
|
||||||
"Dioxus",
|
"Dioxus",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://dioxuslabs.com/assets/smalllogo-b1926fd214dc8427.png",
|
tech_logo: "https://dioxuslabs.com/assets/smalllogo-b1926fd214dc8427.png",
|
||||||
project_site: "https://dioxuslabs.com",
|
project_site: "https://dioxuslabs.com",
|
||||||
skill_level: 40,
|
skill_level: 70,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Vue",
|
"Vue",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://vuejs.org/logo.svg",
|
tech_logo: "https://vuejs.org/logo.svg",
|
||||||
project_site: "https://vuejs.org",
|
project_site: "https://vuejs.org",
|
||||||
skill_level: 1,
|
skill_level: 1,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Mongodb",
|
"Mongodb",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/331488/mongodb.svg",
|
tech_logo: "https://www.svgrepo.com/show/331488/mongodb.svg",
|
||||||
project_site: "https://www.mongodb.com",
|
project_site: "https://www.mongodb.com",
|
||||||
skill_level: 10,
|
skill_level: 10,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Sqlite",
|
"Sqlite",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/374094/sqlite.svg",
|
tech_logo: "https://www.svgrepo.com/show/374094/sqlite.svg",
|
||||||
project_site: "https://www.sqlite.org",
|
project_site: "https://www.sqlite.org",
|
||||||
skill_level: 10,
|
skill_level: 10,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"PostgreSQL",
|
"PostgreSQL",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/303301/postgresql-logo.svg",
|
tech_logo: "https://www.svgrepo.com/show/303301/postgresql-logo.svg",
|
||||||
project_site: "https://www.postgresql.org",
|
project_site: "https://www.postgresql.org",
|
||||||
skill_level: 10,
|
skill_level: 10,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Diesel",
|
"Diesel",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://res.cloudinary.com/dpgrgsh7g/image/upload/v1745443276/diesel_logo_ujtvia.png",
|
tech_logo: "https://res.cloudinary.com/dpgrgsh7g/image/upload/v1745443276/diesel_logo_ujtvia.png",
|
||||||
project_site: "https://diesel.rs",
|
project_site: "https://diesel.rs",
|
||||||
skill_level: 10,
|
skill_level: 10,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Kubernetes",
|
"Kubernetes",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "
|
tech_logo: "https://kubernetes.io/images/kubernetes.png",
|
||||||
https://kubernetes.io/images/kubernetes.png",
|
|
||||||
project_site: "https://kubernetes.io",
|
project_site: "https://kubernetes.io",
|
||||||
skill_level: 5,
|
skill_level: 5,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Terraform",
|
"Terraform",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://www.svgrepo.com/show/448253/terraform.svg",
|
tech_logo: "https://www.svgrepo.com/show/448253/terraform.svg",
|
||||||
project_site: "https://www.terraform.io",
|
project_site: "https://www.terraform.io",
|
||||||
skill_level: 10,
|
skill_level: 15,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
(
|
techs_tools_frameworks_lookup.insert(
|
||||||
"Traefik",
|
"Traefik",
|
||||||
TechDes {
|
TechDes {
|
||||||
tech_logo: "https://hub.docker.com/api/media/repos_logo/v1/library%2Ftraefik",
|
tech_logo: "https://hub.docker.com/api/media/repos_logo/v1/library%2Ftraefik",
|
||||||
project_site: "https://traefik.io/traefik/",
|
project_site: "https://traefik.io/traefik/",
|
||||||
skill_level: 40,
|
skill_level: 60,
|
||||||
},
|
},
|
||||||
),
|
);
|
||||||
]);
|
}
|
||||||
|
techs_tools_frameworks_lookup
|
||||||
techs_tools_frameworks_lookup[to_lookup]
|
|
||||||
}
|
}
|
||||||
|
13
src/lib.rs
13
src/lib.rs
@ -28,7 +28,7 @@ pub enum Route {
|
|||||||
Home {},
|
Home {},
|
||||||
// The route attribute can include dynamic parameters that implement [`std::str::FromStr`] and [`std::fmt::Display`] with the `:` syntax.
|
// The route attribute can include dynamic parameters that implement [`std::str::FromStr`] and [`std::fmt::Display`] with the `:` syntax.
|
||||||
// In this case, id will match any integer like `/blog/123` or `/blog/-456`.
|
// In this case, id will match any integer like `/blog/123` or `/blog/-456`.
|
||||||
#[route("/blog/:id")]
|
#[route("/blogs/:id")]
|
||||||
// Fields of the route variant will be passed to the component as props. In this case, the blog component must accept
|
// Fields of the route variant will be passed to the component as props. In this case, the blog component must accept
|
||||||
// an `id` prop of type `i32`.
|
// an `id` prop of type `i32`.
|
||||||
Blog { id: i32 },
|
Blog { id: i32 },
|
||||||
@ -38,6 +38,9 @@ pub enum Route {
|
|||||||
|
|
||||||
#[route("/new_home")]
|
#[route("/new_home")]
|
||||||
NewHome {},
|
NewHome {},
|
||||||
|
// PageNotFound is a catch all route that will match any route and placing the matched segments in the route field
|
||||||
|
#[route("/:..route")]
|
||||||
|
PageNotFound { route: Vec<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
@ -48,3 +51,11 @@ fn Hello() -> Element {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[component]
|
||||||
|
fn PageNotFound(route: Vec<String>) -> Element {
|
||||||
|
rsx! {
|
||||||
|
h1 { "Page not found" }
|
||||||
|
p { "We are terribly sorry, but the page you requested doesn't exist." }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -13,7 +13,10 @@ pub fn Ender() -> Element {
|
|||||||
// used so that I dont need to copy paste the same link/info everywhere
|
// used so that I dont need to copy paste the same link/info everywhere
|
||||||
let mut footer_info: HashMap<&str, TechDes> = HashMap::new();
|
let mut footer_info: HashMap<&str, TechDes> = HashMap::new();
|
||||||
for used_tech_item in footer_info_to_get {
|
for used_tech_item in footer_info_to_get {
|
||||||
footer_info.insert(used_tech_item, tech_table_lookup(used_tech_item));
|
footer_info.insert(
|
||||||
|
used_tech_item,
|
||||||
|
tech_table_lookup(used_tech_item, false, false),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
rsx! {
|
rsx! {
|
||||||
document::Link { rel: "stylesheet", href: ENDER_CSS }
|
document::Link { rel: "stylesheet", href: ENDER_CSS }
|
||||||
|
@ -39,7 +39,7 @@ pub fn Home() -> Element {
|
|||||||
div { class: "technologies",
|
div { class: "technologies",
|
||||||
|
|
||||||
h2 { "Technology" }
|
h2 { "Technology" }
|
||||||
p { "Here is what I prefer to use." }
|
p { "Here is what I developed skills in." }
|
||||||
div { class: "technologies-cat",
|
div { class: "technologies-cat",
|
||||||
TechCat { cat: "Languages", tech_vec: languages }
|
TechCat { cat: "Languages", tech_vec: languages }
|
||||||
TechCat { cat: "Backend", tech_vec: backend }
|
TechCat { cat: "Backend", tech_vec: backend }
|
||||||
|
@ -18,7 +18,7 @@ pub fn Navbar() -> Element {
|
|||||||
|
|
||||||
div { id: "navbar",
|
div { id: "navbar",
|
||||||
Link { to: Route::NewHome {}, "Home" }
|
Link { to: Route::NewHome {}, "Home" }
|
||||||
Link { to: Route::Blog { id: 1 }, "Blog" }
|
Link { to: Route::Blog { id: 0 }, "Blogs" }
|
||||||
}
|
}
|
||||||
|
|
||||||
// The `Outlet` component is used to render the next component inside the layout. In this case, it will render either
|
// The `Outlet` component is used to render the next component inside the layout. In this case, it will render either
|
||||||
|
@ -61,10 +61,7 @@ pub fn ProjectCards(
|
|||||||
}
|
}
|
||||||
if let Some(site) = website_prop {
|
if let Some(site) = website_prop {
|
||||||
a { href: "{site}",
|
a { href: "{site}",
|
||||||
img {
|
get_tech_logos_from_str { used_tech: "Internet" }
|
||||||
src: "https://www.svgrepo.com/show/490809/internet.svg",
|
|
||||||
alt: "Internet icon",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
235
techs.json
Normal file
235
techs.json
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
{
|
||||||
|
"Rust": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/374056/rust.svg",
|
||||||
|
"project_site": "https://www.rust-lang.org",
|
||||||
|
"skill_level": 65
|
||||||
|
},
|
||||||
|
|
||||||
|
"Python": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452091/python.svg",
|
||||||
|
"project_site": "https://www.python.org",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"JavaScript": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/303206/javascript-logo.svg",
|
||||||
|
"project_site": "https://www.python.org",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"YAML": {
|
||||||
|
"tech_logo": "https://yaml.org/favicon.svg",
|
||||||
|
"project_site": "https://yaml.org",
|
||||||
|
"skill_level": 95
|
||||||
|
},
|
||||||
|
|
||||||
|
"C": {
|
||||||
|
"tech_logo": "https://www.c-language.org/logo.svg",
|
||||||
|
"project_site": "https://www.c-language.org",
|
||||||
|
"skill_level": 50
|
||||||
|
},
|
||||||
|
|
||||||
|
"C++": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452183/cpp.svg",
|
||||||
|
"project_site": "https://cplusplus.com",
|
||||||
|
"skill_level": 50
|
||||||
|
},
|
||||||
|
|
||||||
|
"Github": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/512317/github-142.svg",
|
||||||
|
"project_site": "https://github.com/darkicewolf50",
|
||||||
|
"skill_level": 80
|
||||||
|
},
|
||||||
|
|
||||||
|
"Email": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/491226/email.svg",
|
||||||
|
"project_site": "mailto:darkicewolf50@gmail.com",
|
||||||
|
"skill_level": 100
|
||||||
|
},
|
||||||
|
|
||||||
|
"LinkedIn": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/521725/linkedin.svg",
|
||||||
|
"project_site": "https://www.linkedin.com/in/brock-tomlinson/",
|
||||||
|
"skill_level": 4
|
||||||
|
},
|
||||||
|
|
||||||
|
"Twitch": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/519925/twitch.svg",
|
||||||
|
"project_site": "https://www.twitch.tv/darkicewolf50",
|
||||||
|
"skill_level": 6
|
||||||
|
},
|
||||||
|
|
||||||
|
"Youtube": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/521936/youtube.svg",
|
||||||
|
"project_site": "https://www.youtube.com/@darkicewolf50",
|
||||||
|
"skill_level": 4
|
||||||
|
},
|
||||||
|
|
||||||
|
"Internet": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/490809/internet.svg",
|
||||||
|
"project_site": "https://google.com",
|
||||||
|
"skill_level": 99
|
||||||
|
},
|
||||||
|
|
||||||
|
"React": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452092/react.svg",
|
||||||
|
"project_site": "https://react.dev",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"Docker": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/448221/docker.svg",
|
||||||
|
"project_site": "https://www.docker.com",
|
||||||
|
"skill_level": 70
|
||||||
|
},
|
||||||
|
|
||||||
|
"FastAPI": {
|
||||||
|
"tech_logo": "https://fastapi.tiangolo.com/img/favicon.png",
|
||||||
|
"project_site": "https://fastapi.tiangolo.com",
|
||||||
|
"skill_level": 80
|
||||||
|
},
|
||||||
|
|
||||||
|
"Actix": {
|
||||||
|
"tech_logo": "https://actix.rs/img/logo.png",
|
||||||
|
"project_site": "https://actix.rs",
|
||||||
|
"skill_level": 20
|
||||||
|
},
|
||||||
|
|
||||||
|
"HTML5": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452228/html-5.svg",
|
||||||
|
"project_site": "https://google.com",
|
||||||
|
"skill_level": 90
|
||||||
|
},
|
||||||
|
|
||||||
|
"CSS": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452185/css-3.svg",
|
||||||
|
"project_site": "https://google.com",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"Git": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452210/git.svg",
|
||||||
|
"project_site": "https://git-scm.com",
|
||||||
|
"skill_level": 50
|
||||||
|
},
|
||||||
|
|
||||||
|
"Github Actions": {
|
||||||
|
"tech_logo": "https://cdn.simpleicons.org/githubactions/2088FF",
|
||||||
|
"project_site": "https://github.com/",
|
||||||
|
"skill_level": 40
|
||||||
|
},
|
||||||
|
|
||||||
|
"Vs Code": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/452129/vs-code.svg",
|
||||||
|
"project_site": "https://code.visualstudio.com",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"Gitea": {
|
||||||
|
"tech_logo": "https://about.gitea.com/gitea.png",
|
||||||
|
"project_site": "https://about.gitea.com",
|
||||||
|
"skill_level": 85
|
||||||
|
},
|
||||||
|
|
||||||
|
"AWS": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/448266/aws.svg",
|
||||||
|
"project_site": "https://aws.amazon.com",
|
||||||
|
"skill_level": 40
|
||||||
|
},
|
||||||
|
|
||||||
|
"Firefox": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/378808/firefox-developer-edition-57-70.svg",
|
||||||
|
"project_site": "https://www.mozilla.org/en-CA/firefox/developer/",
|
||||||
|
"skill_level": 80
|
||||||
|
},
|
||||||
|
|
||||||
|
"Markdown": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/510065/markdown.svg",
|
||||||
|
"project_site": "https://www.markdownguide.org",
|
||||||
|
"skill_level": 90
|
||||||
|
},
|
||||||
|
|
||||||
|
"Prettier": {
|
||||||
|
"tech_logo": "https://prettier.io/icon.png",
|
||||||
|
"project_site": "https://prettier.io",
|
||||||
|
"skill_level": 90
|
||||||
|
},
|
||||||
|
|
||||||
|
"DynamoDB": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/353450/aws-dynamodb.svg",
|
||||||
|
"project_site": "https://aws.amazon.com/dynamodb/",
|
||||||
|
"skill_level": 50
|
||||||
|
},
|
||||||
|
|
||||||
|
"Cloudflare": {
|
||||||
|
"tech_logo": "https://qualified-production.s3.us-east-1.amazonaws.com/uploads/3b522ef84c409e4457032e4b4e3b984abbc92522c6f100f4ccc55c0ccfd3062b.png",
|
||||||
|
"project_site": "https://www.cloudflare.com/en-ca/",
|
||||||
|
"skill_level": 40
|
||||||
|
},
|
||||||
|
|
||||||
|
"Netlify": {
|
||||||
|
"tech_logo": "https://qualified-production.s3.us-east-1.amazonaws.com/uploads/0f63ae7280d8d193e346973a1915bf99aea8c63e254eb062bad0bde99b43a9b7.png",
|
||||||
|
"project_site": "https://www.netlify.com",
|
||||||
|
"skill_level": 70
|
||||||
|
},
|
||||||
|
|
||||||
|
"Vercel": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/361653/vercel-logo.svg",
|
||||||
|
"project_site": "https://vercel.com/home",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"Dioxus": {
|
||||||
|
"tech_logo": "https://dioxuslabs.com/assets/smalllogo-b1926fd214dc8427.png",
|
||||||
|
"project_site": "https://dioxuslabs.com",
|
||||||
|
"skill_level": 60
|
||||||
|
},
|
||||||
|
|
||||||
|
"Vue": {
|
||||||
|
"tech_logo": "https://vuejs.org/logo.svg",
|
||||||
|
"project_site": "https://vuejs.org",
|
||||||
|
"skill_level": 1
|
||||||
|
},
|
||||||
|
|
||||||
|
"Mongodb": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/331488/mongodb.svg",
|
||||||
|
"project_site": "https://www.mongodb.com",
|
||||||
|
"skill_level": 10
|
||||||
|
},
|
||||||
|
|
||||||
|
"Sqlite": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/374094/sqlite.svg",
|
||||||
|
"project_site": "https://www.sqlite.org",
|
||||||
|
"skill_level": 10
|
||||||
|
},
|
||||||
|
|
||||||
|
"PostgreSQL": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/303301/postgresql-logo.svg",
|
||||||
|
"project_site": "https://www.postgresql.org",
|
||||||
|
"skill_level": 10
|
||||||
|
},
|
||||||
|
|
||||||
|
"Diesel": {
|
||||||
|
"tech_logo": "https://res.cloudinary.com/dpgrgsh7g/image/upload/v1745443276/diesel_logo_ujtvia.png",
|
||||||
|
"project_site": "https://diesel.rs",
|
||||||
|
"skill_level": 10
|
||||||
|
},
|
||||||
|
|
||||||
|
"Kubernetes": {
|
||||||
|
"tech_logo": "https://kubernetes.io/images/kubernetes.png",
|
||||||
|
"project_site": "https://kubernetes.io",
|
||||||
|
"skill_level": 5
|
||||||
|
},
|
||||||
|
|
||||||
|
"Terraform": {
|
||||||
|
"tech_logo": "https://www.svgrepo.com/show/448253/terraform.svg",
|
||||||
|
"project_site": "https://www.terraform.io",
|
||||||
|
"skill_level": 10
|
||||||
|
},
|
||||||
|
|
||||||
|
"Traefik": {
|
||||||
|
"tech_logo": "https://hub.docker.com/api/media/repos_logo/v1/library%2Ftraefik",
|
||||||
|
"project_site": "https://traefik.io/traefik/",
|
||||||
|
"skill_level": 60
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user