import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; export default function Experience() { return ( Experience Education Extracurricular {ExperienceTabContent()} {EducationTabContent()} {ExtracurricularTabContent()} ); } function ExperienceTabContent() { return ( <> {Position({ title: "Application Developer Intern", dateRange: "Mar 2026 - Apr 2026", country: "Australia", highlights: [ "Successfully merged 13+ pull requests to the Ruby on Rails codebase, fixing bugs and adding new features.", "Communicated clearly about obstacles, suggested probable cause and provided solutions or workarounds.", ], className: "pb-5", })} {Position({ title: "Student Project Frontend Lead", dateRange: "Feb 2026 - May 2026", country: "Australia", highlights: [ "Led the migration from 40+ Javascript files to Typescript while preserving original functionality with minor bug fixes.", "Reviewed 35+ pull requests with only 70% approval rate to maintain codebase quality.", "Contributed 12+ pull requests into frontend and CI/CD to add new features and fix bugs.", ], className: "pb-5", })} {Position({ title: "Full Stack Developer (Part Time)", dateRange: "Dec 2024 - Feb 2026", country: "Malaysia", highlights: [ "Led a team to develop Astro websites with Payload CMS backend implementation.", "Translated Figma wireframes into website implementation efficiently.", "Managed Github Actions CI/CD and deployments.", ], className: "pb-5", })} {/* {Position({ title: "Frontend Web Developer Intern", dateRange: "Jan 2024 - Apr 2024", country: "Malaysia", highlights: [ "Developed WordPress sites and NextJS apps for clients.", "Used lazy-loading to optimise page load speeds. ", "Ensured CMS allowed easy yet flexible customisations for clients.", ], })} */} ); } function EducationTabContent() { return ( <> {Position({ title: "Bachelors of Computer Science", dateRange: "June 2024 - September 2026", country: "Australia", summary: `Awarded 50% Vice-Chancellor Scholarship to study Bachelor's in Computer Science, minoring in Full Stack Development. Active committee member in various clubs including Cybersecurity association and Software Engineering club.`, className: "pb-5", })} {Position({ title: "Diploma in Computer Science", dateRange: "Jan 2022 - Apr 2024", country: "Malaysia", summary: `Focused in Data Science, took on role as President of Computer Programming Club and Vice President of Diploma Student Union.`, })} ); } function ExtracurricularTabContent() { return ( <> {Position({ title: "Web Dev Lead of Software Engineering Club", dateRange: "Sep 2025 - Now", country: "Australia", className: "pb-5", highlights: [ "Developed Rust Discord Bot, includes club membership verification feature using Supabase.", "Improve engagement of Discord server by introducing daily leetcode challenges.", "Hosted a Typescript workshop using Bun and Svelte.", "Featured as a panelist on Our Internship Experience, sharing tips and advice to students." ], })} {Position({ title: "Development Committee of Cybersecurity Association", dateRange: "Nov 2025 - Now", country: "Australia", className: "pb-5", highlights: [ "Leading frontend development of club's revamped website in Astro.", "Contributing to Discord bot development migration from Typescript to Python for lower barrier of entry.", "Hosted study sessions to encourage productivity amongst students.", ], })} {Position({ title: "Marketing Officer of Malaysian Association", dateRange: "Mar 2025 - Oct 2025", country: "Australia", highlights: [ "Directed actors during video filming process.", "Frequently starred in videos, followed directions while also suggesting improvements.", "Edited raw footage into high quality videos.", ], })} ); } // ICONS AND SUBCOMPONENTS function LocationIcon() { return ( ); } function CalendarIcon() { return ( ); } function BriefCaseIcon() { return ( ); } const lineMoveCSS = ` @keyframes line-move { 0% { background-position: 0% 50%; } 100% { background-position: 0% -100%; } } .animate-line-move { animation: line-move 2s linear infinite; background-size: 100% 200%; } `; function Position({ title, institution, dateRange, country, summary = "", className = "", highlights = [], }: { title: string; institution?: string; dateRange: string; country: string; summary?: string; className?: string; highlights?: Array; }) { return ( <>

{title}

{dateRange}
{institution && (
{institution}
)}
{country}
{summary &&

{summary}

}
    {highlights.map((highlight, i) => (
  • {highlight}
  • ))}
); }