diff --git a/src/assets/projects/discretizeui/demo.png b/src/assets/projects/discretizeui/demo.png new file mode 100644 index 0000000..e002d83 Binary files /dev/null and b/src/assets/projects/discretizeui/demo.png differ diff --git a/src/assets/projects/discretizeui/languages.png b/src/assets/projects/discretizeui/languages.png new file mode 100644 index 0000000..61c5dc0 Binary files /dev/null and b/src/assets/projects/discretizeui/languages.png differ diff --git a/src/assets/projects/discretizeui/tooltip.png b/src/assets/projects/discretizeui/tooltip.png new file mode 100644 index 0000000..620437e Binary files /dev/null and b/src/assets/projects/discretizeui/tooltip.png differ diff --git a/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_52_AM.png b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_52_AM.png new file mode 100644 index 0000000..6ddfaef Binary files /dev/null and b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_52_AM.png differ diff --git a/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_53_AM.png b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_53_AM.png new file mode 100644 index 0000000..7772428 Binary files /dev/null and b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_53_AM.png differ diff --git a/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_54_AM.png b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_54_AM.png new file mode 100644 index 0000000..67e405f Binary files /dev/null and b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_54_AM.png differ diff --git a/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_55_AM.png b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_55_AM.png new file mode 100644 index 0000000..ae93465 Binary files /dev/null and b/src/assets/projects/optimizer/Discretize-Gear-Optimizer-08-05-2025_11_55_AM.png differ diff --git a/src/assets/projects/videovault/dashboard.png b/src/assets/projects/videovault/dashboard.png new file mode 100644 index 0000000..a6da330 Binary files /dev/null and b/src/assets/projects/videovault/dashboard.png differ diff --git a/src/assets/projects/videovault/edit.png b/src/assets/projects/videovault/edit.png new file mode 100644 index 0000000..5ed0e8b Binary files /dev/null and b/src/assets/projects/videovault/edit.png differ diff --git a/src/assets/projects/videovault/frontpage.png b/src/assets/projects/videovault/frontpage.png new file mode 100644 index 0000000..3ba456c Binary files /dev/null and b/src/assets/projects/videovault/frontpage.png differ diff --git a/src/assets/projects/videovault/player.png b/src/assets/projects/videovault/player.png new file mode 100644 index 0000000..4532b25 Binary files /dev/null and b/src/assets/projects/videovault/player.png differ diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro index ab61a9a..57bb16b 100644 --- a/src/components/BaseHead.astro +++ b/src/components/BaseHead.astro @@ -1,6 +1,4 @@ --- -// Import the global.css file here so that it is included on -// all pages through the use of the component. import "../styles/global.css"; import ubuntuRegularWoff2 from "@fontsource/ubuntu/files/ubuntu-latin-400-normal.woff2?url"; import ubuntuBoldWoff2 from "@fontsource/ubuntu/files/ubuntu-latin-700-normal.woff2?url"; diff --git a/src/components/Carousel.astro b/src/components/Carousel.astro new file mode 100644 index 0000000..8ef2067 --- /dev/null +++ b/src/components/Carousel.astro @@ -0,0 +1,233 @@ +--- +import type { ImageMetadata } from "astro"; +import { Icon } from "astro-icon/components"; + +interface Props { + images: { + src: ImageMetadata; + alt: string; + }[]; +} + +const { images } = Astro.props; + +const carouselId = `carousel-${Math.random().toString(36).slice(2, 11)}`; +const helpId = `${carouselId}-help`; +--- + +
+ + + + + + + + + + + + +
+
+ + +

+ Carousel focused. Use Left and Right Arrow keys to change slides. Press T to + toggle wide mode. Press Escape to exit wide mode. +

+
+ + diff --git a/src/components/ProjectSection.astro b/src/components/ProjectSection.astro new file mode 100644 index 0000000..29cc95e --- /dev/null +++ b/src/components/ProjectSection.astro @@ -0,0 +1,99 @@ +--- +import { Icon } from "astro-icon/components"; +import { type Project } from "../consts"; +import Carousel from "./Carousel.astro"; +import ThreeColumnSection from "./ThreeColumnSection.astro"; + +interface Props { + projects: Project[]; +} + +const { projects } = Astro.props; +--- + +{ + projects.map((project) => ( + + {/* ---------- LEFT: Project details ---------- */} +
+
+ {/* Title + optional company */} +

+ {project.title} + + {/* Duration */} +

+ + {project.duration} +

+

+ + {/* Description */} +

+ {project.description} +

+ + {/* Tech stack */} +
+ {project.tech_stack.map((tech) => ( + + {tech} + + ))} +
+ + {/* Deliverables (optional) */} + {project.deliverables?.length && ( +
    + {project.deliverables.map((item) => ( +
  • {item}
  • + ))} +
+ )} + + {/* Links */} +
+ {project.live_url && ( + + Live + + )} + {project.repo_url && ( + + Repo + + )} +
+
+
+ + {/* ---------- CENTER: Carousel ---------- */} +
+
+ +
+
+ + {/* ---------- RIGHT: Empty for now ---------- */} +