installed new deps and created Experience card
This commit is contained in:
parent
0a04a9586d
commit
18fab018b1
3
app/.gitignore
vendored
3
app/.gitignore
vendored
@ -4,3 +4,6 @@
|
|||||||
# React Router
|
# React Router
|
||||||
/.react-router/
|
/.react-router/
|
||||||
/build/
|
/build/
|
||||||
|
.idea/
|
||||||
|
../.idea
|
||||||
|
package-lock.json
|
||||||
|
|||||||
@ -7,14 +7,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "handotrial";
|
font-family: "sora";
|
||||||
src: url("./assets/fonts/hando-trial.ttf");
|
src: url("./assets/fonts/Sora-SemiBold.ttf");
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
font-family: handotrial, system-ui, Avenir, Helvetica, Arial, sans-serif;
|
font-family: sora, system-ui, Avenir, Helvetica, Arial, sans-serif;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
|
|
||||||
font-synthesis: none;
|
font-synthesis: none;
|
||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
BIN
app/app/assets/fonts/Sora-SemiBold.ttf
Normal file
BIN
app/app/assets/fonts/Sora-SemiBold.ttf
Normal file
Binary file not shown.
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
17
app/app/experience-card/Experience.ts
Normal file
17
app/app/experience-card/Experience.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
export default class Experience {
|
||||||
|
name: string;
|
||||||
|
longName?: string;
|
||||||
|
from: string;
|
||||||
|
to?: string;
|
||||||
|
description: string;
|
||||||
|
location: string;
|
||||||
|
|
||||||
|
constructor(name: string, from: string, description: string, location: string, to?: string, longName?: string) {
|
||||||
|
this.name = name;
|
||||||
|
this.from = from;
|
||||||
|
this.to = to;
|
||||||
|
this.description = description;
|
||||||
|
this.location = location;
|
||||||
|
this.longName = longName;
|
||||||
|
}
|
||||||
|
}
|
||||||
0
app/app/experience-card/experience-card.css
Normal file
0
app/app/experience-card/experience-card.css
Normal file
25
app/app/experience-card/experience-card.tsx
Normal file
25
app/app/experience-card/experience-card.tsx
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import "./experience-card.css"
|
||||||
|
import Experience from "./Experience";
|
||||||
|
|
||||||
|
export default function ExperienceCard({props}: {props: Experience}) {
|
||||||
|
//TODO onClick animate
|
||||||
|
//TODO CSS
|
||||||
|
//TODO after animation display details
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="experience-card">
|
||||||
|
<div className="experience-title">
|
||||||
|
<h2>{props.name}</h2>
|
||||||
|
<div className={"experience-date"}>
|
||||||
|
<h3>{props.from}</h3>
|
||||||
|
{props.to && <h3>{props.to}</h3>}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="experience-info">
|
||||||
|
{props.longName && <div className={"experience-logname"}>{props.longName}</div>}
|
||||||
|
<div className={"experience-location"}>{props.location}</div>
|
||||||
|
</div>
|
||||||
|
<div className={"experience-description"}>{props.description}</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -7,10 +7,10 @@ import {
|
|||||||
ScrollRestoration,
|
ScrollRestoration,
|
||||||
} from "react-router";
|
} from "react-router";
|
||||||
|
|
||||||
import type { Route } from "./+types/root";
|
|
||||||
import "./app.css";
|
import "./app.css";
|
||||||
import Navbar from "~/navbar/Navbar";
|
import Navbar from "./navbar/Navbar";
|
||||||
import Warncard from "~/warn-card/Warncard";
|
import Warncard from "./warn-card/Warncard";
|
||||||
|
import type { Route } from "../app/+types/root";
|
||||||
|
|
||||||
export const links: Route.LinksFunction = () => [
|
export const links: Route.LinksFunction = () => [
|
||||||
{ rel: "preconnect", href: "https://fonts.googleapis.com" },
|
{ rel: "preconnect", href: "https://fonts.googleapis.com" },
|
||||||
@ -1,6 +1,6 @@
|
|||||||
import type { Route } from "./+types/home";
|
import type { Route } from ".react-router/types/app/+types/root";
|
||||||
import { Link} from "react-router";
|
import {Link} from "react-router";
|
||||||
import { Welcome } from "~/welcome/welcome";
|
import { Welcome } from "../welcome/welcome";
|
||||||
|
|
||||||
export function meta({}: Route.MetaArgs) {
|
export function meta({}: Route.MetaArgs) {
|
||||||
return [
|
return [
|
||||||
22
app/app/routes/projects.tsx
Normal file
22
app/app/routes/projects.tsx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import type {Route} from "../../.react-router/types/app/routes/+types/home";
|
||||||
|
import Experience from "../experience-card/Experience";
|
||||||
|
import ExperienceCard from "../experience-card/experience-card";
|
||||||
|
|
||||||
|
export function meta({}: Route.MetaArgs) {
|
||||||
|
return [
|
||||||
|
{ title: "Projects" },
|
||||||
|
{ name: "description", content: "Quentin Leblanc's projects" },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Project() {
|
||||||
|
const projects = [
|
||||||
|
new Experience("Mastermind React", "2025", "Simple mastermind game realized with React framework.", "Geneva"),
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
projects.map((project, id) =>
|
||||||
|
<li key={id}><ExperienceCard props={project}/></li>
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
4737
app/package-lock.json
generated
4737
app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "app",
|
"name": "QL-resume",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -14,7 +14,8 @@
|
|||||||
"isbot": "^5.1.27",
|
"isbot": "^5.1.27",
|
||||||
"react": "^19.1.0",
|
"react": "^19.1.0",
|
||||||
"react-dom": "^19.1.0",
|
"react-dom": "^19.1.0",
|
||||||
"react-router": "^7.5.3"
|
"react-router": "^7.5.3",
|
||||||
|
"react-router-dom": "^7.8.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-router/dev": "^7.5.3",
|
"@react-router/dev": "^7.5.3",
|
||||||
@ -27,4 +28,4 @@
|
|||||||
"vite": "^6.3.3",
|
"vite": "^6.3.3",
|
||||||
"vite-tsconfig-paths": "^5.1.4"
|
"vite-tsconfig-paths": "^5.1.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@ -1,12 +0,0 @@
|
|||||||
import type {Route} from "../../.react-router/types/app/routes/+types/home";
|
|
||||||
|
|
||||||
export function meta({}: Route.MetaArgs) {
|
|
||||||
return [
|
|
||||||
{ title: "Projects" },
|
|
||||||
{ name: "description", content: "Quentin Leblanc's projects" },
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Project() {
|
|
||||||
return <p>Projects page</p>;
|
|
||||||
}
|
|
||||||
@ -15,7 +15,7 @@
|
|||||||
"rootDirs": [".", "./.react-router/types"],
|
"rootDirs": [".", "./.react-router/types"],
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"~/*": ["./app/*"]
|
"~/*": ["./src/*"]
|
||||||
},
|
},
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"verbatimModuleSyntax": true,
|
"verbatimModuleSyntax": true,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user