diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 8b24117..e3e1246 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "curriculum-vitae-server" -version = "0.1.0" +version = "1.0.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/backend/db/4_info_text.sql b/backend/db/4_info_text.sql index 8a7bb33..4b50daf 100644 --- a/backend/db/4_info_text.sql +++ b/backend/db/4_info_text.sql @@ -10,5 +10,6 @@ CREATE TABLE public.info_text ( lang_id int4 NOT NULL, title text NULL, description text NULL, + pdf_url text NULL, CONSTRAINT skills_languages_fk FOREIGN KEY (lang_id) REFERENCES public.languages(id) -);; \ No newline at end of file +); \ No newline at end of file diff --git a/backend/src/db.rs b/backend/src/db.rs index 0a20717..b7a1521 100644 --- a/backend/src/db.rs +++ b/backend/src/db.rs @@ -16,7 +16,8 @@ pub struct Info { pub title: Option, pub softskills: Option, pub interests: Option, - pub description: Option + pub description: Option, + pub pdf_url: Option } #[derive(Deserialize, Serialize)] diff --git a/backend/src/main.rs b/backend/src/main.rs index 5ede84e..2dcd78f 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -77,7 +77,8 @@ async fn info(Path(lang_id): Path, State(pool): State) -> Json { + fakeSidebar.style.opacity = `${1}`; + await new Promise((resolve) => setTimeout(resolve, 300)); + sidebar.style.opacity = `${1}`; sidebarScrollingHandler(); }); @@ -170,5 +174,5 @@ /> {/if} -
+
{/if} diff --git a/frontend/src/lib/components/suggest.svelte b/frontend/src/lib/components/suggest.svelte new file mode 100644 index 0000000..aadb0b0 --- /dev/null +++ b/frontend/src/lib/components/suggest.svelte @@ -0,0 +1,58 @@ + + + + +
+
+ +
+
+
+
+

{text.suggest_title}

+

+ {text.suggest_subtext} +

+
+
+ +
+
diff --git a/frontend/src/lib/css/cv.css b/frontend/src/lib/css/cv.css index 6425ef6..76de134 100644 --- a/frontend/src/lib/css/cv.css +++ b/frontend/src/lib/css/cv.css @@ -75,6 +75,10 @@ margin-right: 1rem; } + .footer-github>svg { + margin-right: 1rem; + } + .end { padding-bottom: 5rem; } @@ -197,11 +201,16 @@ .footer-mobile-btn { display: flex; - flex-direction: row; + flex-direction: column; justify-content: center; align-items: center; } + .footer-mobile-btn>div { + margin-top: 1rem; + margin-bottom: 1rem; + } + .footer-btn-container { display: flex; justify-content: center; @@ -230,6 +239,10 @@ margin-right: 0.5rem; } + .footer-github>svg { + margin-right: 0.5rem; + } + .footer-btn>span { margin-left: 0.5rem; } diff --git a/frontend/src/lib/css/sidebar.css b/frontend/src/lib/css/sidebar.css index 3ec2983..9fe91f2 100644 --- a/frontend/src/lib/css/sidebar.css +++ b/frontend/src/lib/css/sidebar.css @@ -4,12 +4,15 @@ width: 15rem; transition: all 0s ease 0s; margin-left: 0.8dvw; + opacity: 0; } .fake-sidebar { width: 20rem; box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; background-color: var(--color-special); + transition: all .3s ease 0s; + opacity: 0; } #sidebar-container { diff --git a/frontend/src/lib/css/slide.css b/frontend/src/lib/css/slide.css index 46a8a81..0bc6c6e 100644 --- a/frontend/src/lib/css/slide.css +++ b/frontend/src/lib/css/slide.css @@ -66,6 +66,7 @@ margin-left: 2.25rem !important; margin-right: 2.25rem !important; box-shadow: 0 7px 30px -10px rgba(150, 170, 180, 0.5) !important; + opacity: 20%; } /* For button at the end of the container*/ @@ -193,6 +194,7 @@ .slide-unactive { scale: 0.9; box-shadow: 0 7px 30px -10px rgba(150, 170, 180, 0.5) !important; + opacity: 0%; } /* For button at the end of the container*/ diff --git a/frontend/src/lib/css/suggest.css b/frontend/src/lib/css/suggest.css new file mode 100644 index 0000000..b899d2a --- /dev/null +++ b/frontend/src/lib/css/suggest.css @@ -0,0 +1,124 @@ +.suggest-main { + position: fixed; + width: 50dvw; + left: 25dvw; + background-color: var(--color-text); + color: var(--color-background); + z-index: 2; + bottom: 2rem; + border-radius: 0.4rem; + box-shadow: 0px 8px 18px -1px #1e1226a0; + transition: all .3s ease 0s; + opacity: 0; +} + +.suggest-main-container { + display: flex; + flex-direction: row; + justify-content: space-between; + height: 12rem; +} + +.suggest-close { + right: 0; + position: absolute; + margin: 0.5rem; +} + +.suggest-close>button { + display: flex; + border-radius: 50%; + border: none; + flex-direction: column; + justify-content: center; + padding: 0.4rem; + cursor: pointer; + color: var(--color-background); + background-color: #ffffff00; + transition: all .3s ease 0s; +} + +.suggest-close>button:hover { + box-shadow: 0px 8px 18px -1px #1e1226a0; + background-color: var(--color-background); + color: var(--color-text); +} + +.suggest-close>button:active { + transform: translateY(3px); + box-shadow: 0px 4px 12px -1px #1e1226a0; +} + +.suggest-container { + padding: 1rem; + padding-left: 2rem; + display: flex; + flex-direction: column; +} + +.suggest-container>div { + display: flex; + flex-direction: column; + justify-content: center; + flex: 1; +} + +.suggest-center { + justify-content: center; + align-items: center; + padding: 1rem; + padding-right: 2rem; + min-width: 10rem; +} + +.suggest-h1 { + font-size: 1.8rem; + font-family: 'Gabarito', sans-serif !important; + color: var(--color-background); + margin-bottom: 0; + margin-top: 1.5rem; +} + +.suggest-text { + margin-bottom: 1.5rem; + font-family: 'Gabarito', sans-serif; +} + +.suggest-download { + padding: 1rem; + margin: 0; +} + +.suggest-download>svg { + padding-right: 0.6rem; +} + +@media screen and (max-width: 1200px) { + .suggest-main { + width: 80dvw; + left: 10dvw; + } + + .suggest-h1 { + font-size: clamp(0.9rem, 4vw, 2rem); + } + + .suggest-text { + font-size: clamp(0.8rem, 2vw, 1rem); + } + + .suggest-download { + font-size: 0.6rem; + padding: 0.5rem; + } + + .suggest-download>svg { + margin-left: 0; + padding-right: 0.3rem; + } + + .suggest-center { + min-width: 8rem; + padding-right: 1rem; + } +} \ No newline at end of file diff --git a/frontend/src/lib/lang/en.json b/frontend/src/lib/lang/en.json index d577029..cd5faf2 100644 --- a/frontend/src/lib/lang/en.json +++ b/frontend/src/lib/lang/en.json @@ -25,6 +25,10 @@ "popup_dl_arc": "Download Archive", "popup_dl_rep": "See Report", + "suggest_title": "Want to Simplify Your Experience?", + "suggest_subtext": "You can directly view my Portfolio as a pdf file!", + "suggest_button": "View Portfolio", + "projects_read": "Read more", "backend": "This backend", diff --git a/frontend/src/lib/lang/fr.json b/frontend/src/lib/lang/fr.json index c932888..c2448f9 100644 --- a/frontend/src/lib/lang/fr.json +++ b/frontend/src/lib/lang/fr.json @@ -25,6 +25,10 @@ "popup_dl_arc": "Archive ZIP", "popup_dl_rep": "Voir le Rapport", + "suggest_title": "Vous préférez un simple fichier ?", + "suggest_subtext": "Il est possible de directement voir mon CV ici !", + "suggest_button": "Voir CV", + "projects_read": "Lire plus", "backend": "Ce serveur", diff --git a/frontend/src/routes/lang=[lang]/+page.svelte b/frontend/src/routes/lang=[lang]/+page.svelte index 1f6a8e9..e74b851 100644 --- a/frontend/src/routes/lang=[lang]/+page.svelte +++ b/frontend/src/routes/lang=[lang]/+page.svelte @@ -15,6 +15,7 @@ import SlideShow from "$lib/components/slideshow.svelte"; import FlagComponent from "$lib/components/flag-component.svelte"; import ProjectsPopup from "$lib/components/projects-popup.svelte"; + import Suggest from "$lib/components/suggest.svelte"; import Pill from "$lib/components/pill.svelte"; import { mdiSchool, @@ -26,6 +27,7 @@ mdiHeart, mdiArrowDown, mdiArrowUp, + mdiFileDocumentOutline, } from "@mdi/js"; import { onMount } from "svelte"; @@ -127,6 +129,7 @@ {#if data.status == 0} + {#if innerWidth < 1200 && sidebarLoaded} @@ -270,7 +273,16 @@