generated from Technigo/react-vite-boilerplate
-
Notifications
You must be signed in to change notification settings - Fork 53
React Portfolio- Bianka Romero #19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Bianka2112
wants to merge
66
commits into
Technigo:main
Choose a base branch
from
Bianka2112:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
66 commits
Select commit
Hold shift + click to select a range
9cacfcb
initial sections and component files
Bianka2112 2d9bddc
added projects.json info and .map fx
Bianka2112 3bc67e7
added linkButton component
Bianka2112 b2c29f6
skills section, json and mount added
Bianka2112 6689bf7
figma link in readme
Bianka2112 17a8f3b
added projects bio and separate tags
Bianka2112 286a0bf
fixed unique key console error for .map
Bianka2112 a50fcfd
template social icons added
Bianka2112 da83e08
added styled-components and update vite.config.js
Bianka2112 6ce0efd
primary button styled comp, fixed linkbutton fx
Bianka2112 02d8f4e
export named individual social icons
Bianka2112 956d96c
created iconslist comp, render icons into buttons
Bianka2112 0573541
add rel to links for security
Bianka2112 5b6db78
now.. add rel to links for security
Bianka2112 bec6134
add styles files and started some styled-comp, inserted hero images
Bianka2112 8295ee0
added Poppins font
Bianka2112 33e3d40
updates hero images
Bianka2112 cda5163
update skills section styling
Bianka2112 e6fbcf7
format footer styling
Bianka2112 fafb948
tweak footer
Bianka2112 1c929e6
style social icons, footer, skills. mobile first
Bianka2112 c83c206
fix social icons, footer styling
Bianka2112 7dd0278
added media queries
Bianka2112 de8a976
font fix media query
Bianka2112 0de4f31
header font fix
Bianka2112 434c68d
update card comp for custom title
Bianka2112 31643bd
font, media, tech sec
Bianka2112 f49bfad
header font, media q
Bianka2112 06a18ba
skills sec font
Bianka2112 322a64a
skills med q, tag border style
Bianka2112 051091f
hero imgs media q, finally fix mobile
Bianka2112 05d7154
hero fade
Bianka2112 f519f1e
update tech tags in feat proj section
Bianka2112 8a05d6d
mobile hero image fix
Bianka2112 f158354
FP section spacing, media q
Bianka2112 1be76a0
project cards spacing
Bianka2112 cd78253
renamed styledtags, media q
Bianka2112 cf3bfa4
format FP section, added image placeholder
Bianka2112 6093707
formatting image-text proj cards
Bianka2112 3822996
spacing fixes
Bianka2112 a698bdf
more fixing media q
Bianka2112 d70e090
padding tech sec for tablet
Bianka2112 f64c756
media q for skills sec tablet
Bianka2112 b638ec0
media q for skills, responsive like butter
Bianka2112 401f427
updated FP image path
Bianka2112 4a93230
fixed hero animation
Bianka2112 4aea605
fix proj image paths
Bianka2112 1822e2a
skills left align desktop, semantic cleanup
Bianka2112 ddcea0e
header, footer desktop padding
Bianka2112 1869a16
header cleanup: font, spacing
Bianka2112 29b89cf
styledtags margin
Bianka2112 67edd86
meta description
Bianka2112 ca008f1
alt for social icons
Bianka2112 c25d48b
update webicon url to new site
Bianka2112 f775b1a
code cleanup, fix nested a tags, update heart animation, add aria-lab…
Bianka2112 5d3f20f
update favicon image, index code cleanup, add meta
Bianka2112 0b2f67c
update a11y, adjust focus outline
Bianka2112 6d5f8df
multi src favicon for browser support
Bianka2112 c69d5bb
add reflections section, color adjust footer
Bianka2112 21dccd5
fix styling, spacing of reflections sec, adjust icons in buttons
Bianka2112 01f3bad
fix image sizing
Bianka2112 daeb3d5
media q for socialicons
Bianka2112 e7bea1a
add contact links and updated socials
Bianka2112 c8bea45
socials hover effect
Bianka2112 3bd5922
adjust article role for lighthouse
Bianka2112 25062a5
lazy loading on images
Bianka2112 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,5 @@ | ||
| # Portfolio | ||
|
|
||
| Deployed Site: | ||
|
|
||
| Figma link: https://www.figma.com/design/hFjGb9pVuXS6SbxUAGdCkL/--Bianka---Figma-designs-for-students--Copy-?node-id=3084-966&p=f&t=rOSwChuyln6MbyrC-0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,8 +1,31 @@ | ||
| export const App = () => { | ||
| import projects from "./data/projects.json" | ||
| import skills from "./data/skills.json" | ||
| import articles from "./data/articles.json" | ||
| import FeaturedProjects from "./sections/FeaturedProjects" | ||
| import Footer from "./sections/Footer" | ||
| import Header from "./sections/Header" | ||
| import Skills from "./sections/Skills" | ||
| import Tech from "./sections/Tech" | ||
| import Reflections from "./sections/Reflections" | ||
| import { GlobalStyle } from "./styles/GlobalStyle" | ||
| import { ThemeProvider } from "styled-components" | ||
| import { theme } from "./styles/theme" | ||
|
|
||
| const App = () => { | ||
| return ( | ||
| <> | ||
| <h1>Portfolio</h1> | ||
| <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem, laborum! Maxime animi nostrum facilis distinctio neque labore consectetur beatae eum ipsum excepturi voluptatum, dicta repellendus incidunt fugiat, consequatur rem aperiam.</p> | ||
| </> | ||
| <ThemeProvider theme={theme}> | ||
| <GlobalStyle /> | ||
| <Header /> | ||
| <Tech /> | ||
| <FeaturedProjects | ||
| projects={projects.projects} /> | ||
| <Skills | ||
| skills={skills.skills}/> | ||
| <Reflections | ||
| articles={articles.articles}/> | ||
| <Footer /> | ||
| </ThemeProvider> | ||
| ) | ||
| } | ||
|
|
||
| export default App |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| import styled from "styled-components" | ||
| import { media } from "../styles/media" | ||
|
|
||
| const Tag = styled.li` | ||
| display: block; | ||
|
|
||
| @media ${media.desktop} { | ||
| align-self: left; | ||
| } | ||
| ` | ||
| const TagsContainer = styled.ul` | ||
|
|
||
| ` | ||
| const CardTitle = styled.h2` | ||
| padding-top: 16px; | ||
| ` | ||
| const CardText = styled.p` | ||
| font-size: 16px; | ||
| padding-top: 16px; | ||
|
|
||
| @media ${media.desktop} { | ||
| font-size: 18px; | ||
| } | ||
| ` | ||
|
|
||
| const Card = ({ title, text, tags, TitleComponent = CardTitle }) => { | ||
| const cardContent = ( | ||
| <> | ||
| {tags && ( | ||
| <TagsContainer> | ||
| {tags.map((tag, index) => ( | ||
| <Tag key={index}>{tag}</Tag> | ||
| ))} | ||
| </TagsContainer> | ||
| )} | ||
| {text && ( | ||
| <CardText>{text}</CardText> | ||
| )} | ||
| </> | ||
| ) | ||
|
|
||
| return ( | ||
| <article> | ||
| <TitleComponent>{title}</TitleComponent> | ||
| {cardContent} | ||
| </article> | ||
| ) | ||
| } | ||
|
|
||
| export default Card | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| import styled from "styled-components" | ||
| import { media } from "../styles/media" | ||
| import { IoCallOutline, IoChatbubbleEllipsesOutline, IoMailOutline } from "react-icons/io5"; | ||
|
|
||
| const ContactContainer = styled.div` | ||
| display: block; | ||
| padding: 64px 0; | ||
|
|
||
| @media ${media.tablet} { | ||
| font-size: 24px; | ||
| } | ||
|
|
||
| @media ${media.desktop} { | ||
| font-size: 30px; | ||
| } | ||
|
|
||
| a { | ||
| color: inherit; | ||
| display: block; | ||
| margin-top: 8px; | ||
| } | ||
| ` | ||
|
|
||
| const ContactItem = styled.a` | ||
| display: flex; | ||
| align-items: center; | ||
| gap: 16px; | ||
| cursor: pointer; | ||
| transition: color 0.2s ease; | ||
|
|
||
| &:hover { | ||
| transform: scale(1.1); | ||
| color: #0077ff; | ||
| } | ||
|
|
||
| svg { | ||
| flex-shrink: 0; | ||
| font-size: 1em; | ||
| vertical-align: middle; | ||
| } | ||
| ` | ||
|
|
||
| const ContactName = styled.h3` | ||
| margin-bottom: 12px; | ||
| ` | ||
|
|
||
| const Contact = ({ name, phone, email }) => { | ||
| // Clean phone number for tel and sms links (remove spaces, parentheses, dashes) | ||
| const cleanPhone = phone.replace(/[^+\d]/g, ""); | ||
|
|
||
| return ( | ||
| <ContactContainer> | ||
| <ContactName>{name}</ContactName> | ||
|
|
||
| <ContactItem href={`tel:${cleanPhone}`} aria-label={`Call ${phone}`}> | ||
| <IoCallOutline /> {phone} | ||
| </ContactItem> | ||
|
|
||
| <ContactItem href={`sms:${cleanPhone}`} aria-label={`Send SMS to ${phone}`}> | ||
| <IoChatbubbleEllipsesOutline /> Send SMS | ||
| </ContactItem> | ||
|
|
||
| <ContactItem href={`mailto:${email}`} aria-label={`Send email to ${email}`}> | ||
| <IoMailOutline /> {email} | ||
| </ContactItem> | ||
| </ContactContainer> | ||
| ) | ||
| } | ||
|
|
||
| export default Contact |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,90 @@ | ||
| import laptopBG from "../assets/laptop-BG.jpg" | ||
| import cameraBG from "../assets/camera-BG.jpg" | ||
| import BiankaRomero from "../assets/BiankaRomero.jpg" | ||
| import styled, { keyframes } from "styled-components" | ||
|
|
||
|
|
||
| const HeroContainer = styled.div` | ||
| max-width: 100vw; | ||
| width: 100%; | ||
| height: auto; | ||
| display: flex; | ||
| justify-content: center; | ||
| padding: 16px; | ||
| margin: 0 auto; | ||
|
|
||
| ` | ||
| const HeroImg = styled.img` | ||
| width: 30%; | ||
| height: auto; | ||
| max-width: 100%; | ||
| object-fit: cover; | ||
| border-radius: 12px; | ||
| box-shadow: 0 4px 8px rgba(0,0,0,0.2); | ||
| ` | ||
|
|
||
| const fadeUpCenter = keyframes` | ||
| from { | ||
| opacity: 0; | ||
| transform: translateY(40px); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| transform: translateY(0); | ||
| } | ||
| ` | ||
|
|
||
|
|
||
| const slideInLeft = keyframes` | ||
| from { | ||
| opacity: 0; | ||
| transform: rotate(-4.7deg) translateX(-100px); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| transform: rotate(-4.7deg) translateX(50px); | ||
| } | ||
| ` | ||
|
|
||
| const slideInRight = keyframes` | ||
| from { | ||
| opacity: 0; | ||
| transform: rotate(4.7deg) translateX(100px); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| transform: rotate(4.7deg) translateX(-50px); | ||
| } | ||
| ` | ||
|
|
||
|
|
||
| const LeftHeroImg = styled(HeroImg)` | ||
| animation: ${slideInLeft} 1s ease forwards; | ||
| z-index: -1; | ||
| ` | ||
|
|
||
| const CenterHeroImg = styled(HeroImg)` | ||
| animation: ${fadeUpCenter} 1s ease forwards; | ||
| z-index: 0; | ||
|
|
||
| &:hover { | ||
| transform: scale(1.05); | ||
| } | ||
| ` | ||
|
|
||
| const RightHeroImg = styled(HeroImg)` | ||
| animation: ${slideInRight} 1s ease forwards; | ||
| z-index: -1; | ||
| ` | ||
|
|
||
| const HeroImages = () => { | ||
| return ( | ||
| <HeroContainer> | ||
| <LeftHeroImg src={laptopBG} alt="Laptop background" /> | ||
| <CenterHeroImg src={BiankaRomero} alt="Bianka Romero" /> | ||
| <RightHeroImg src={cameraBG} alt="Camera background" /> | ||
| </HeroContainer> | ||
| ) | ||
| } | ||
|
|
||
| export default HeroImages |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| import styled from "styled-components" | ||
|
|
||
| const LinkButtonStyle = styled.a` | ||
| font-size: 18px; | ||
| border-radius: 12px; | ||
| border: 2px solid black; | ||
| background: #000; | ||
| color: white; | ||
| display: flex; | ||
| width: 100%; | ||
| max-width: 303px; | ||
| height: 48px; | ||
| padding: 0px 16px; | ||
| align-items: center; | ||
| gap: 16px; | ||
| flex-shrink: 0; | ||
| transition: transform 0.3s ease-in-out; | ||
|
|
||
| &:hover { | ||
| transform: scale(1.1); | ||
| } | ||
| ` | ||
|
|
||
| const IconStyle = styled.span` | ||
| display: flex; | ||
| align-items: center; | ||
| justify-content: center; | ||
| height: 100%; | ||
| line-height: 0; | ||
| font-size: 32px; | ||
| ` | ||
|
|
||
| const LinkButton = ({ link, linkUse, IconComponent, ...props }) => { | ||
| return ( | ||
| <LinkButtonStyle | ||
| href={link} | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| {...props}> | ||
|
|
||
| {IconComponent && ( | ||
| <IconStyle aria-hidden="true"> | ||
| <IconComponent /> | ||
| </IconStyle> | ||
| )} | ||
| {linkUse} | ||
| </LinkButtonStyle> | ||
| ) | ||
| } | ||
|
|
||
| export default LinkButton |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like how you combine the title/body/tags logic into one reusable component here in Card.jsx. It’s very DRY. 👍