From 357ac123c14acd65cf0ac05ab9e4e459aa4cee2d Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Wed, 18 Oct 2023 19:27:12 +0100 Subject: [PATCH 01/60] Init hugo project --- .babelrc | 11 - .env.example | 2 - .gitignore | 34 - .prettierignore | 32 - _projects/astrobuild.mdx | 66 -- _projects/react-weather-app.mdx | 23 - archetypes/default.md | 6 + components/Button/index.tsx | 23 - components/Button/styles.tsx | 51 - components/Button/types.ts | 8 - components/Card/index.tsx | 41 - components/Card/styles.tsx | 77 -- components/Card/types.ts | 9 - components/CodeBlock/index.tsx | 34 - components/CodeBlock/styles.tsx | 24 - components/CodeBlock/types.ts | 4 - components/Container.tsx | 12 - components/Footer/index.tsx | 54 - components/Footer/styles.tsx | 41 - components/GlobalStyles.tsx | 72 -- components/Hero/index.tsx | 18 - components/Hero/styles.tsx | 35 - components/IconButton/index.tsx | 30 - components/IconButton/styles.tsx | 18 - components/IconButton/types.ts | 10 - components/Input/index.tsx | 37 - components/Input/styles.tsx | 16 - components/Input/types.ts | 12 - components/MDXButton/index.tsx | 42 - components/MDXButton/styles.tsx | 53 - components/MDXButton/types.ts | 10 - components/MobileNav/index.tsx | 74 -- components/MobileNav/styles.tsx | 37 - components/MobileNav/types.ts | 8 - components/Nav/index.tsx | 56 - components/Nav/styles.tsx | 59 -- hugo.toml | 3 + mdx.d.ts | 14 - next-env.d.ts | 5 - next.config.js | 13 - package.json | 38 - pages/404.tsx | 48 - pages/_app.tsx | 69 -- pages/_document.tsx | 85 -- pages/blog/[slug].tsx | 143 --- pages/blog/index.tsx | 74 -- pages/contact.tsx | 133 --- pages/index.tsx | 116 --- pages/projects/[slug].tsx | 153 --- pages/projects/index.tsx | 79 -- public/dark-favicon.png | Bin 310 -> 0 bytes public/dark-logo.svg | 1 - public/favicon.ico | Bin 314 -> 0 bytes public/icons/arrow-left.svg | 1 - public/icons/dark-close.svg | 1 - public/icons/dark-codepen.svg | 1 - public/icons/dark-github.svg | 1 - public/icons/dark-linkedin.svg | 1 - public/icons/dark-menu.svg | 1 - public/icons/dark-twitter.svg | 1 - public/icons/light-close.svg | 1 - public/icons/light-codepen.svg | 1 - public/icons/light-github.svg | 1 - public/icons/light-linkedin.svg | 1 - public/icons/light-menu.svg | 1 - public/icons/light-twitter.svg | 1 - public/icons/moon.svg | 1 - public/icons/sun.svg | 1 - public/light-favicon.png | Bin 312 -> 0 bytes public/light-logo.svg | 1 - public/logo.png | Bin 18877 -> 0 bytes public/photo.jpg | Bin 77137 -> 0 bytes public/resume.pdf | Bin 200191 -> 0 bytes public/robots.txt | 3 - public/sitemap.xml | 42 - styled.d.ts | 17 - styles/404.tsx | 25 - styles/blog/index.tsx | 38 - styles/blog/slug.tsx | 93 -- styles/contact.tsx | 49 - styles/home.tsx | 49 - styles/projects/index.tsx | 38 - styles/projects/slug.tsx | 91 -- styles/shared.tsx | 21 - styles/theme.tsx | 63 -- tsconfig.json | 22 - utils/blog.ts | 78 -- utils/gtag.ts | 31 - utils/projects.ts | 78 -- utils/styles.ts | 45 - yarn.lock | 1663 ------------------------------ 91 files changed, 9 insertions(+), 4566 deletions(-) delete mode 100644 .babelrc delete mode 100644 .env.example delete mode 100644 .gitignore delete mode 100644 .prettierignore delete mode 100644 _projects/astrobuild.mdx delete mode 100644 _projects/react-weather-app.mdx create mode 100644 archetypes/default.md delete mode 100644 components/Button/index.tsx delete mode 100644 components/Button/styles.tsx delete mode 100644 components/Button/types.ts delete mode 100644 components/Card/index.tsx delete mode 100644 components/Card/styles.tsx delete mode 100644 components/Card/types.ts delete mode 100644 components/CodeBlock/index.tsx delete mode 100644 components/CodeBlock/styles.tsx delete mode 100644 components/CodeBlock/types.ts delete mode 100644 components/Container.tsx delete mode 100644 components/Footer/index.tsx delete mode 100644 components/Footer/styles.tsx delete mode 100644 components/GlobalStyles.tsx delete mode 100644 components/Hero/index.tsx delete mode 100644 components/Hero/styles.tsx delete mode 100644 components/IconButton/index.tsx delete mode 100644 components/IconButton/styles.tsx delete mode 100644 components/IconButton/types.ts delete mode 100644 components/Input/index.tsx delete mode 100644 components/Input/styles.tsx delete mode 100644 components/Input/types.ts delete mode 100644 components/MDXButton/index.tsx delete mode 100644 components/MDXButton/styles.tsx delete mode 100644 components/MDXButton/types.ts delete mode 100644 components/MobileNav/index.tsx delete mode 100644 components/MobileNav/styles.tsx delete mode 100644 components/MobileNav/types.ts delete mode 100644 components/Nav/index.tsx delete mode 100644 components/Nav/styles.tsx create mode 100644 hugo.toml delete mode 100644 mdx.d.ts delete mode 100644 next-env.d.ts delete mode 100644 next.config.js delete mode 100644 package.json delete mode 100644 pages/404.tsx delete mode 100644 pages/_app.tsx delete mode 100644 pages/_document.tsx delete mode 100644 pages/blog/[slug].tsx delete mode 100644 pages/blog/index.tsx delete mode 100644 pages/contact.tsx delete mode 100644 pages/index.tsx delete mode 100644 pages/projects/[slug].tsx delete mode 100644 pages/projects/index.tsx delete mode 100644 public/dark-favicon.png delete mode 100644 public/dark-logo.svg delete mode 100644 public/favicon.ico delete mode 100644 public/icons/arrow-left.svg delete mode 100644 public/icons/dark-close.svg delete mode 100644 public/icons/dark-codepen.svg delete mode 100644 public/icons/dark-github.svg delete mode 100644 public/icons/dark-linkedin.svg delete mode 100644 public/icons/dark-menu.svg delete mode 100644 public/icons/dark-twitter.svg delete mode 100644 public/icons/light-close.svg delete mode 100644 public/icons/light-codepen.svg delete mode 100644 public/icons/light-github.svg delete mode 100644 public/icons/light-linkedin.svg delete mode 100644 public/icons/light-menu.svg delete mode 100644 public/icons/light-twitter.svg delete mode 100644 public/icons/moon.svg delete mode 100644 public/icons/sun.svg delete mode 100644 public/light-favicon.png delete mode 100644 public/light-logo.svg delete mode 100644 public/logo.png delete mode 100644 public/photo.jpg delete mode 100644 public/resume.pdf delete mode 100644 public/robots.txt delete mode 100644 public/sitemap.xml delete mode 100644 styled.d.ts delete mode 100644 styles/404.tsx delete mode 100644 styles/blog/index.tsx delete mode 100644 styles/blog/slug.tsx delete mode 100644 styles/contact.tsx delete mode 100644 styles/home.tsx delete mode 100644 styles/projects/index.tsx delete mode 100644 styles/projects/slug.tsx delete mode 100644 styles/shared.tsx delete mode 100644 styles/theme.tsx delete mode 100644 tsconfig.json delete mode 100644 utils/blog.ts delete mode 100644 utils/gtag.ts delete mode 100644 utils/projects.ts delete mode 100644 utils/styles.ts delete mode 100644 yarn.lock diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 33140ac..0000000 --- a/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": ["next/babel"], - "plugins": [ - [ - "styled-components", - { - "ssr": true - } - ] - ] -} diff --git a/.env.example b/.env.example deleted file mode 100644 index 65a3cf3..0000000 --- a/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -NEXT_PUBLIC_FORMSPREE_KEY=FORMSPREE_KEY -NEXT_PUBLIC_GOOGLE_ANALYTICS_KEY=GOOGLE_ANALYTICS_KEY \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1437c53..0000000 --- a/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env.local -.env.development.local -.env.test.local -.env.production.local - -# vercel -.vercel diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 22c8bbc..0000000 --- a/.prettierignore +++ /dev/null @@ -1,32 +0,0 @@ -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env.local -.env.development.local -.env.test.local -.env.production.local - -# vercel -.vercel diff --git a/_projects/astrobuild.mdx b/_projects/astrobuild.mdx deleted file mode 100644 index a2911b2..0000000 --- a/_projects/astrobuild.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: 'Astrobuild' -description: 'Prototype of a collaboration tool between stakeholders for building software projects' -date: '2023-06-11' -demo: 'https://astrobuild.vercel.app' -code: 'https://github.com/hazemKrimi/astrobuild' -tags: ['react', 'typescript', 'graphql', 'styled-components', 'apollographql', 'vite', 'react-flow'] ---- - -# Introduction - -This was my final year of studies projects where my collegue and I worked on a prototype for a project building solution for the agency we had an internship in called [Astrolab](https://astrolab-agency.com). -As there were lockdowns in Tunisia in 2020/2021 because of covid software agencies and clients could not have in person meetings to discuss a client's software project. -So the idea of Astrobuild is to reduce meetings and make the client participate with other stakeholders in the process of creating a software project by tracking and communicating with their associated product owner. - -# Features - -### Client - - Account management - - Project creation from choosing the templates, features and deliverables (Specification, design, MVP or full build) - - Project tracking - - Chat with associated product owner for tracking and support - - Payment (WIP) - -### Product Owner - - Account management - - Management of templates - - Review of projects and transferring deliverables - - Chat with clients on their projects - -### Developer - - Account management - - Features, categories and wireframes management - -### Admin - - Identity and access management (WIP) - -# Technologies Used -The frontend project is a [React](https://react.dev) application with [TypeScript](https://www.typescriptlang.org) which consumes a set of [GraphQL](https://graphql.org) APIs using [Apollo GraphQL](https://www.apollographql.com) and a some REST APIs. - -A small components library with a custom theme was made for this project using [Styled Components](https://styled-components.com) which can be viewed at the components folder. - -The prototyping feature was done using [React Flow](https://reactflow.dev) which is a library for creating and interacting with diagrams. - -To view the full architecture of the application go [here](https://github.com/MedAmineFouzai/astrobuild-api/blob/main/README.md). - -# Screenshots - -### Project page for the client -![Project](https://github.com/hazemKrimi/astrobuild/blob/main/screenshots/project.png?raw=true) - -### Template page for the product owner -![Template](https://github.com/hazemKrimi/astrobuild/blob/main/screenshots/template.png?raw=true) - -### Prototype page for the developer -![Prototype](https://github.com/hazemKrimi/astrobuild/blob/main/screenshots/prototype.png?raw=true) - -### Support page for the product owner -![Support](https://github.com/hazemKrimi/astrobuild/blob/main/screenshots/support.png?raw=true) - -### User editing page for the admin -![Admin](https://github.com/hazemKrimi/astrobuild/blob/main/screenshots/admin.png?raw=true) - -# Credits - -- Mohamed Amine Fouzai: [GitHub](https://github.com/MedAmineFouzai), [LinkedIn](https://www.linkedin.com/in/amine-fouzai) \ No newline at end of file diff --git a/_projects/react-weather-app.mdx b/_projects/react-weather-app.mdx deleted file mode 100644 index 3ee0cb7..0000000 --- a/_projects/react-weather-app.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: 'React Weather App' -description: 'Weather app made with React, TypeScript and OpenWeatherMap API' -date: '2021-09-19' -demo: 'https://hazemkrimi.github.io/react-weather-app' -code: 'https://github.com/hazemKrimi/react-weather-app' -tags: ['react', 'typescript', 'openweathermap'] ---- - -# About the project - -This is a project that I made as a step in the interview process for my final year internship. - -# Technologies - -- React -- TypeScript -- Styled Components -- OpenWeatherMap API - -# Screenshots - -![Desktop](https://res.cloudinary.com/dun9hhyz1/image/upload/v1643548378/personal-website/portfolio/react-weather-app/screenshot_ueu2a4.png) diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/components/Button/index.tsx b/components/Button/index.tsx deleted file mode 100644 index 7c0ff53..0000000 --- a/components/Button/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Props } from './types'; -import { StyledButton } from './styles'; - -const Button = ({ - variant = 'text', - href, - target, - onClick, - children, - className, -}: Props) => ( - - {children} - -); - -export default Button; diff --git a/components/Button/styles.tsx b/components/Button/styles.tsx deleted file mode 100644 index 640f9da..0000000 --- a/components/Button/styles.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import styled from 'styled-components'; -import Link from 'next/link'; -import { Props } from './types'; - -export const StyledButton = styled(Link)` - position: relative; - display: inline; - cursor: pointer; - background: none; - color: var(--text); - border: ${({ variant }) => - variant === 'outline' ? '2px solid var(--text)' : '2px solid transparent'}; - font-weight: bold; - text-transform: ${({ variant }) => - variant === 'outline' ? 'uppercase' : 'inherit'}; - padding: ${({ variant }) => (variant === 'outline' ? '.5rem 1rem' : '0rem')}; - text-align: left; - text-decoration: none; - transition: color 250ms ease-in-out, border 250ms ease-in-out; - z-index: 1; - - @media (max-width: 768px) { - padding: ${({ variant }) => - variant === 'outline' ? '.5rem .75rem' : '0rem'}; - } - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - z-index: -1; - background-color: ${({ variant }) => - variant === 'outline' ? 'var(--text)' : 'inherit'}; - transition: transform 250ms ease-in-out; - transform: scaleX(0); - transform-origin: left; - } - - &:hover { - color: ${({ variant }) => - variant === 'outline' ? 'var(--background)' : 'inherit'}; - border: 2px solid transparent; - } - - &:hover::before { - transform: scaleX(1); - } -`; diff --git a/components/Button/types.ts b/components/Button/types.ts deleted file mode 100644 index 30dc416..0000000 --- a/components/Button/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type Props = { - variant?: 'outline' | 'text'; - href: string; - target?: HTMLAnchorElement['target']; - onClick?: () => void; - children: React.ReactNode; - className?: string; -}; diff --git a/components/Card/index.tsx b/components/Card/index.tsx deleted file mode 100644 index bfeed71..0000000 --- a/components/Card/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import Image from 'next/image'; -import { StyledCard } from './styles'; -import { Props } from './types'; - -const Card = ({ - title, - description, - image, - tags, - href, - target, - onClick, -}: Props) => { - return ( - -
-

{title}

-

{description}

- {tags && ( -
- {tags.map((tag, index) => ( - #{tag}  - ))} -
- )} -
- {image && ( -
- {title} -
- )} -
- ); -}; - -export default Card; diff --git a/components/Card/styles.tsx b/components/Card/styles.tsx deleted file mode 100644 index bed96bc..0000000 --- a/components/Card/styles.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import styled from 'styled-components'; -import Link from 'next/link'; - -export const StyledCard = styled(Link)<{ image?: boolean }>` - cursor: pointer; - width: 100%; - display: grid; - grid-template-columns: ${({ image }) => (image ? 'auto 9.375rem' : 'auto')}; - align-items: stretch; - transition: color 0ms ease-in-out; - text-decoration: none; - color: var(--text); - - @media (max-width: 320px) { - grid-template-columns: ${({ image }) => (image ? 'auto 7.813rem' : 'auto')}; - } - - @media (min-width: 1440px) { - grid-template-columns: ${({ image }) => - image ? 'auto 15.625rem' : 'auto'}; - } - - &:hover { - & > div { - background: ${({ theme }) => theme.colors.blue}; - - * { - color: ${({ theme }) => theme.colors.dark.text} !important; - } - } - - img { - filter: ${({ image }) => (image ? 'grayscale(80%)' : 'none')}; - } - } - - .card-content { - padding: 1rem 0rem; - background: var(--secondary-background); - display: grid; - row-gap: 0.5rem; - - @media (max-width: 768px) { - padding: 0.75rem 0rem; - } - } - - .card-image { - position: relative; - width: 100%; - } - - h3, - p, - .tags-wrapper { - padding: 0rem 1rem; - - @media (max-width: 768px) { - padding: 0rem 0.5rem; - } - } - - h3 { - font-size: 1.3rem; - } - - .tags-wrapper { - display: flex; - flex-direction: row; - align-content: center; - flex-wrap: wrap; - } - - span { - font-size: 0.7rem; - } -`; diff --git a/components/Card/types.ts b/components/Card/types.ts deleted file mode 100644 index 2b8e27e..0000000 --- a/components/Card/types.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface Props { - title: string; - description: string; - image?: string; - tags?: string[]; - href: string; - target?: HTMLAnchorElement['target']; - onClick?: () => void; -} diff --git a/components/CodeBlock/index.tsx b/components/CodeBlock/index.tsx deleted file mode 100644 index be5d7ed..0000000 --- a/components/CodeBlock/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import Highlight, { defaultProps, Language } from 'prism-react-renderer'; -import theme from 'prism-react-renderer/themes/vsDark'; -import { Props } from './types'; -import { Line, LineContent, LineNo, Pre } from './styles'; - -const CodeBlock = ({ children, className }: Props) => { - const language = className.replace(/language-/, '') as Language; - - return ( - - {({ className, style, tokens, getLineProps, getTokenProps }) => ( -
-          {tokens.map((line, i) => (
-            
-              {i + 1}
-              
-                {line.map((token, key) => (
-                  
-                ))}
-              
-            
-          ))}
-        
- )} -
- ); -}; - -export default CodeBlock; diff --git a/components/CodeBlock/styles.tsx b/components/CodeBlock/styles.tsx deleted file mode 100644 index 502a527..0000000 --- a/components/CodeBlock/styles.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import styled from 'styled-components'; - -export const Pre = styled.pre` - text-align: left; - margin: 1em 0; - padding: 0.5em; - overflow: scroll; -`; - -export const Line = styled.div` - display: table-row; -`; - -export const LineNo = styled.span` - display: table-cell; - text-align: right; - padding-right: 1em; - user-select: none; - opacity: 0.5; -`; - -export const LineContent = styled.span` - display: table-cell; -`; diff --git a/components/CodeBlock/types.ts b/components/CodeBlock/types.ts deleted file mode 100644 index eff76be..0000000 --- a/components/CodeBlock/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Props { - className: string; - children: React.ReactNode; -} diff --git a/components/Container.tsx b/components/Container.tsx deleted file mode 100644 index 058450c..0000000 --- a/components/Container.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import styled from 'styled-components'; - -const Container = styled.div` - width: 85%; - margin: auto; - - @media (max-width: 768px) { - width: 95%; - } -`; - -export default Container; diff --git a/components/Footer/index.tsx b/components/Footer/index.tsx deleted file mode 100644 index 4462214..0000000 --- a/components/Footer/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { useContext } from 'react'; -import { ThemeContext } from '../../styles/theme'; -import { StyledFooter } from './styles'; -import IconButton from '../IconButton'; - -const Footer = () => { - const { mode } = useContext(ThemeContext); - - return ( - -
- - - -
-

Hazem Krimi © {new Date().getFullYear()}

-
- ); -}; - -export default Footer; diff --git a/components/Footer/styles.tsx b/components/Footer/styles.tsx deleted file mode 100644 index 735753c..0000000 --- a/components/Footer/styles.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import styled from 'styled-components'; - -export const StyledFooter = styled.footer` - position: absolute; - bottom: 0; - min-height: 100px; - width: 85%; - margin: auto; - display: grid; - grid-template-columns: repeat(2, 1fr); - column-gap: 2rem; - justify-content: flex-end; - align-content: center; - padding: 1rem 0rem; - - @media (max-width: 768px) { - width: 95%; - } - - .contact { - display: grid; - grid-template-columns: repeat(auto-fill, 16px); - column-gap: 1rem; - align-items: center; - justify-content: flex-start; - - * { - user-select: none; - } - - @media (max-width: 768px) { - column-gap: 0.5rem; - } - } - - p { - display: inline; - text-align: right; - font-weight: bold; - } -`; diff --git a/components/GlobalStyles.tsx b/components/GlobalStyles.tsx deleted file mode 100644 index dc0cb4d..0000000 --- a/components/GlobalStyles.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { createGlobalStyle } from 'styled-components'; - -const GlobalStyles = createGlobalStyle` - * { - margin: 0; - padding: 0; - box-sizing: border-box; - font-family: 'Source Code Pro', monospace; - font-size: 16px; - line-height: 1.5; - outline: none; - user-select: text; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - - @media(max-width: 768px) { - overflow-x: scroll; - } - - &::-webkit-scrollbar { - width: 0; - height: 0; - background: transparent; - } - - &::-webkit-scrollbar-thumb { - background: transparent; - } - - &::selection { - background: var(--text); - color: var(--background); - } - } - - html { - position: relative; - min-height: 100%; - background: var(--background) !important; - } - - * { - color: var(--text); - } - - ul, ol { - margin-inline-start: 1.9rem; - } - - body { - margin: 0 0 100px; - transition: color 250ms ease-in-out, background 250ms ease-in-out; - scroll-behavior: smooth; - - #nprogress .bar { - background: var(--text) !important; - } - - #nprogress .peg { - box-shadow: 0 0 10px var(--text), 0 0 5px var(--text) !important; - } - } - - body::-webkit-scrollbar { - width: 0.5rem !important; - } - - body::-webkit-scrollbar-thumb { - background-color: var(--text) !important; - } -`; - -export default GlobalStyles; diff --git a/components/Hero/index.tsx b/components/Hero/index.tsx deleted file mode 100644 index ce2853f..0000000 --- a/components/Hero/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Wrapper } from './styles'; -import Image from 'next/image'; - -const Hero = () => ( - -
-

Hi, I am Hazem

-

I Like Building Software

-

Full Stack TypeScript Developer

-

Life Long Learner

-
-
- Hazem Krimi -
-
-); - -export default Hero; diff --git a/components/Hero/styles.tsx b/components/Hero/styles.tsx deleted file mode 100644 index a4183ff..0000000 --- a/components/Hero/styles.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import styled from 'styled-components'; - -export const Wrapper = styled.div` - min-height: 45vh; - display: grid; - grid-template-columns: 1fr 32.188rem; - align-items: center; - height: auto; - text-align: left; - - @media (max-width: 1024px) { - min-height: 35vh; - grid-template-columns: 1fr; - - .photo { - display: none; - } - } - - h2 { - font-size: 1.5rem; - - @media (min-width: 1440px) { - font-size: 2rem; - } - - @media (min-width: 2560px) { - font-size: 3.5rem; - } - } - - .blue { - color: ${({ theme }) => theme.colors.blue}; - } -`; diff --git a/components/IconButton/index.tsx b/components/IconButton/index.tsx deleted file mode 100644 index 390d037..0000000 --- a/components/IconButton/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import Image from 'next/image'; -import { Props } from './types'; -import { StyledButton, StyledLink } from './styles'; - -const IconButton = ({ - alt, - icon, - href, - target, - onClick, - className, - width = 24, - height = 24, -}: Props) => - href ? ( - - {alt} - - ) : ( - - {alt} - - ); - -export default IconButton; diff --git a/components/IconButton/styles.tsx b/components/IconButton/styles.tsx deleted file mode 100644 index f75a111..0000000 --- a/components/IconButton/styles.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import styled, { css } from 'styled-components'; -import Link from 'next/link'; - -const sharedStyles = css` - cursor: pointer; - background: none; - border: none; - display: inline-flex; - align-items: center; -`; - -export const StyledLink = styled(Link)` - ${sharedStyles} -`; - -export const StyledButton = styled.button` - ${sharedStyles} -`; diff --git a/components/IconButton/types.ts b/components/IconButton/types.ts deleted file mode 100644 index 9dc87cd..0000000 --- a/components/IconButton/types.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface Props { - alt: string; - icon: string; - width?: number; - height?: number; - href?: string; - target?: HTMLAnchorElement['target']; - onClick?: () => void; - className?: string; -} diff --git a/components/Input/index.tsx b/components/Input/index.tsx deleted file mode 100644 index c1b2287..0000000 --- a/components/Input/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { BigField, SmallField } from './styles'; -import { Props } from './types'; - -const Input = ({ - type = 'text', - variant = 'small', - name, - value, - required, - placeholder, - className, - onChange, -}: Props) => { - return variant === 'small' ? ( - - ) : ( - - ); -}; - -export default Input; diff --git a/components/Input/styles.tsx b/components/Input/styles.tsx deleted file mode 100644 index 08ec3e8..0000000 --- a/components/Input/styles.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import styled from 'styled-components'; - -export const SmallField = styled.input` - border: none; - padding: 1rem; - background: var(--secondary-background); - color: var(--text); -`; - -export const BigField = styled.textarea` - resize: none; - border: none; - padding: 1rem; - background: var(--secondary-background); - color: var(--text); -`; diff --git a/components/Input/types.ts b/components/Input/types.ts deleted file mode 100644 index 51fab22..0000000 --- a/components/Input/types.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface Props { - placeholder?: string; - type: 'text' | 'email'; - variant: 'small' | 'big'; - name: string; - value: string; - required?: boolean; - onChange?: ( - event: React.ChangeEvent - ) => void; - className?: string; -} diff --git a/components/MDXButton/index.tsx b/components/MDXButton/index.tsx deleted file mode 100644 index afaaffb..0000000 --- a/components/MDXButton/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { useContext } from 'react'; -import { ThemeContext } from '../../styles/theme'; -import { Props } from './types'; -import { StyledLink, StyledButton } from './styles'; - -const MDXButton = ({ - variant = 'text', - type = 'button', - link, - target, - children, - disabled, - className, -}: Props) => { - const { mode } = useContext(ThemeContext); - - return link ? ( - - {children} - - ) : ( - - {children} - - ); -}; - -export default MDXButton; diff --git a/components/MDXButton/styles.tsx b/components/MDXButton/styles.tsx deleted file mode 100644 index 6be80bf..0000000 --- a/components/MDXButton/styles.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import Link from 'next/link'; -import styled, { css } from 'styled-components'; -import { Props } from './types'; - -export const sharedStyles = css` - cursor: pointer; - display: ${({ variant }) => - ['action', 'outline'].includes(variant as string) ? 'block' : 'inline'}; - width: ${({ variant }) => - ['action', 'outline'].includes(variant as string) ? '100%' : 'auto'}; - background: ${({ variant }) => (variant === 'action' ? '#1573CA' : 'none')}; - color: ${({ variant, mode }) => - variant === 'action' ? 'white' : mode === 'dark' ? 'white' : 'black'}; - border: ${({ variant, mode }) => - variant === 'outline' - ? `2px solid ${mode === 'dark' ? 'white' : 'black'}` - : 'none'}; - font-weight: bold; - font-size: ${({ variant }) => - ['action', 'outline'].includes(variant as string) ? '1.05rem' : 'inherit'}; - text-transform: ${({ variant }) => - ['action', 'outline'].includes(variant as string) - ? 'uppercase' - : 'inherit'}; - padding: ${({ variant }) => - ['action', 'outline'].includes(variant as string) ? '.5rem 1rem' : '0rem'}; - text-align: ${({ variant }) => - ['action', 'outline'].includes(variant as string) ? 'center' : 'left'}; - text-decoration: none; - transition: color 250ms ease-in-out; - - ${({ disabled }) => - disabled && - ` - background: gray; - cursor: default; - `} - - @media (max-width: 768px) { - padding: ${({ variant }) => - ['action', 'outline'].includes(variant as string) - ? '.5rem .75rem' - : '0rem'}; - } -`; - -export const StyledLink = styled(Link)` - ${sharedStyles} -`; - -export const StyledButton = styled.button>` - ${sharedStyles} -`; diff --git a/components/MDXButton/types.ts b/components/MDXButton/types.ts deleted file mode 100644 index 5bc3947..0000000 --- a/components/MDXButton/types.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type Props = { - variant?: 'outline' | 'text' | 'action'; - type?: 'button' | 'submit'; - link?: string; - target?: HTMLAnchorElement['target']; - mode?: string; - disabled?: boolean; - className?: string; - children: React.ReactNode; -}; diff --git a/components/MobileNav/index.tsx b/components/MobileNav/index.tsx deleted file mode 100644 index 6b7df81..0000000 --- a/components/MobileNav/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { useContext, useRef, useEffect } from 'react'; -import { ThemeContext } from '../../styles/theme'; -import { Props } from './types'; -import { Bar } from './styles'; -import IconButton from '../IconButton'; -import Button from '../Button'; - -const MobileNav = ({ open, close }: Props) => { - const { mode, toggle } = useContext(ThemeContext); - const ref = useRef(null); - - useEffect(() => { - document.addEventListener('mousedown', (event: MouseEvent) => { - if (ref.current && ref.current.contains(event.target as Node)) { - document.addEventListener('mouseup', (event) => { - if (ref.current && !ref.current.contains(event.target as Node)) - return; - }); - } else { - document.addEventListener('mouseup', (event) => { - if (ref.current && !ref.current.contains(event.target as Node)) - close(); - }); - } - }); - - return () => { - document.removeEventListener('mousedown', () => {}); - document.removeEventListener('mouseup', () => {}); - }; - }); - - return ( - -
- -
-
- -
-
- -
-
- -
-
- -
-
- ); -}; - -export default MobileNav; diff --git a/components/MobileNav/styles.tsx b/components/MobileNav/styles.tsx deleted file mode 100644 index 380ca0f..0000000 --- a/components/MobileNav/styles.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import styled from 'styled-components'; -import { StyledProps } from './types'; - -export const Bar = styled.nav` - position: fixed; - z-index: 2; - top: 0; - right: 0; - transform-origin: right; - transform: ${({ open }) => (open ? 'translateX(0%)' : 'translateX(100%)')}; - width: 80%; - height: 100vh; - background: var(--text); - transition: transform 250ms ease-in-out; - display: grid; - grid-template-rows: 30% repeat(4, 50px); - padding: 1rem 1rem 5rem 1rem; - - @media (orientation: landscape) { - grid-template-rows: auto; - } - - .close { - justify-self: flex-end; - align-self: flex-start; - margin-top: 0.5rem; - } - - .mobile-button-wrapper { - display: flex; - margin: 0rem 1rem; - - a { - color: var(--text-inverted) !important; - } - } -`; diff --git a/components/MobileNav/types.ts b/components/MobileNav/types.ts deleted file mode 100644 index d677fb7..0000000 --- a/components/MobileNav/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type Props = { - open: boolean; - close: () => void; -}; - -export type StyledProps = { - open: boolean; -}; diff --git a/components/Nav/index.tsx b/components/Nav/index.tsx deleted file mode 100644 index d20dfd2..0000000 --- a/components/Nav/index.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useContext, useState } from 'react'; -import { ThemeContext } from '../../styles/theme'; -import { Bar } from './styles'; -import Link from 'next/link'; -import Image from 'next/image'; -import Button from '../Button'; -import IconButton from '../IconButton'; -import MobileNav from '../MobileNav'; - -const Nav = () => { - const [mobileNavOpen, setMobileNavOpen] = useState(false); - const { mode, toggle } = useContext(ThemeContext); - - return ( - - - Logo Image -

Hazem Krimi

- -
- - - - - -
-
- - setMobileNavOpen(true)} - /> -
- setMobileNavOpen(false)} /> -
- ); -}; - -export default Nav; diff --git a/components/Nav/styles.tsx b/components/Nav/styles.tsx deleted file mode 100644 index 16efd84..0000000 --- a/components/Nav/styles.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import styled from 'styled-components'; - -export const Bar = styled.nav` - width: 100%; - display: grid; - grid-template-columns: auto 1fr; - align-items: center; - padding: 1rem 0rem; - - * { - user-select: none; - } - - h1 { - font-size: 1.7rem; - - @media (max-width: 768px) { - font-size: 1rem; - } - } - - div, - a.logo { - display: grid; - align-items: center; - column-gap: 1rem; - - @media (max-width: 768px) { - column-gap: 0.5rem; - } - } - - a.logo { - text-decoration: none; - color: var(--text); - cursor: pointer; - grid-template-columns: repeat(2, auto); - justify-content: flex-start; - } - - .buttons { - grid-template-columns: repeat(5, auto); - justify-content: flex-end; - - @media (max-width: 768px) { - display: none; - } - } - - .mobile-buttons { - display: none; - - @media (max-width: 768px) { - display: grid; - grid-template-columns: repeat(2, auto); - justify-content: flex-end; - } - } -`; diff --git a/hugo.toml b/hugo.toml new file mode 100644 index 0000000..ab90034 --- /dev/null +++ b/hugo.toml @@ -0,0 +1,3 @@ +baseURL = 'http://hazemkrimi.tech/' +languageCode = 'en-us' +title = 'Hazem Krimi' diff --git a/mdx.d.ts b/mdx.d.ts deleted file mode 100644 index aeb22ac..0000000 --- a/mdx.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -declare module '@mdx-js/react' { - import * as React from 'react'; - - export type Components = { - [key]?: React.ComponentType; - }; - - export interface MDXProviderProps { - children: React.ReactNode; - components?: Components; - } - - export class MDXProvider extends React.Component {} -} diff --git a/next-env.d.ts b/next-env.d.ts deleted file mode 100644 index 4f11a03..0000000 --- a/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js deleted file mode 100644 index 911d3af..0000000 --- a/next.config.js +++ /dev/null @@ -1,13 +0,0 @@ -const withMDX = require('@next/mdx')({ - extension: /\.mdx?$/, - options: { - providerImportSource: '@mdx-js/react', - }, -}); - -module.exports = withMDX({ - pageExtensions: ['ts', 'tsx', 'md', 'mdx'], - images: { - domains: ['res.cloudinary.com'], - }, -}); diff --git a/package.json b/package.json deleted file mode 100644 index 6cd83f9..0000000 --- a/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "personal-website", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "format": "prettier --write ./**/*.{js,jsx,ts,tsx}" - }, - "dependencies": { - "@formspree/react": "^2.4.1", - "@mdx-js/loader": "^2.3.0", - "@next/mdx": "^13.2.4", - "gray-matter": "^4.0.3", - "next": "^13.2.4", - "next-mdx-remote": "^4.4.1", - "nprogress": "^0.2.0", - "prism-react-renderer": "^1.3.5", - "react": "18.2.0", - "react-dom": "18.2.0", - "reading-time": "^1.5.0", - "styled-components": "^5.3.9" - }, - "devDependencies": { - "@types/node": "^18.15.3", - "@types/nprogress": "^0.2.0", - "@types/react": "^18.0.28", - "@types/styled-components": "^5.1.26", - "babel-plugin-styled-components": "^2.0.7", - "babel-runtime": "^6.26.0", - "prettier": "^2.8.8", - "typescript": "^5.0.2" - }, - "engines": { - "node": ">=14.x" - } -} diff --git a/pages/404.tsx b/pages/404.tsx deleted file mode 100644 index 226905b..0000000 --- a/pages/404.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { useRouter } from 'next/router'; -import Head from 'next/head'; -import IconButton from '../components/IconButton'; -import { Wrapper } from '../styles/404'; - -const NotFound = () => { - const router = useRouter(); - - return ( - <> - - - - - - - - - - 404 Not Found | Hazem Krimi - - -

404: This page could not be found

-
router.push('/')}> - - Go Home -
-
- - ); -}; - -export default NotFound; diff --git a/pages/_app.tsx b/pages/_app.tsx deleted file mode 100644 index aed57d0..0000000 --- a/pages/_app.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { useEffect } from 'react'; - -import type { AppProps } from 'next/app'; -import Script from 'next/script'; -import { useRouter } from 'next/router'; - -import Nav from '../components/Nav'; -import Theme from '../styles/theme'; -import Container from '../components/Container'; -import GlobalStyles from '../components/GlobalStyles'; -import SharedStyles from '../styles/shared'; -import Footer from '../components/Footer'; - -import NProgress from 'nprogress'; -import 'nprogress/nprogress.css'; - -import { pageview } from '../utils/gtag'; -import { initStyles } from '../utils/styles'; - -NProgress.configure({ showSpinner: false }); - -const App = ({ Component, pageProps }: AppProps) => { - const router = useRouter(); - - useEffect(() => { - router.events.on('routeChangeStart', () => { - NProgress.start(); - }); - - router.events.on('routeChangeComplete', (url) => { - NProgress.done(); - pageview(url); - }); - - router.events.on('routeChangeError', () => { - NProgress.done(); - }); - - return () => { - router.events.off('routeChangeComplete', (url) => { - pageview(url); - }); - }; - }, [router.events]); - - return ( - <> - + + +
+ {{ block "main" . }}{{ end }} +
+ + \ No newline at end of file diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..42487e8 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,4 @@ +{{ define "main" }} + {{ partial "theme-switch.html" . }} + {{ .Content }} +{{ end }} \ No newline at end of file diff --git a/layouts/partials/theme-switch.html b/layouts/partials/theme-switch.html new file mode 100644 index 0000000..7cc38aa --- /dev/null +++ b/layouts/partials/theme-switch.html @@ -0,0 +1 @@ + \ No newline at end of file From 44705e17f7681633db57ff26c43ebb8d91e75483 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Wed, 18 Oct 2023 22:58:43 +0100 Subject: [PATCH 04/60] Fix font import and build js --- assets/css/baseof.css | 15 +++++++++++++-- content/_index.md | 2 ++ layouts/_default/baseof.html | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/assets/css/baseof.css b/assets/css/baseof.css index b9f842d..2b09541 100644 --- a/assets/css/baseof.css +++ b/assets/css/baseof.css @@ -1,5 +1,16 @@ -@import url("../fonts/OpenSans.ttf"); -@import url("../fonts/OpenSans-Italic.ttf"); +@font-face { + font-family: 'Open Sans'; + src: url('/fonts/OpenSans.ttf') format('ttf'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + src: url('/fonts/OpenSans-Italic.ttf') format('ttf'); + font-weight: normal; + font-style: italic; +} :root { /* Colors */ diff --git a/content/_index.md b/content/_index.md index 349fc31..7ae040f 100644 --- a/content/_index.md +++ b/content/_index.md @@ -5,3 +5,5 @@ date: 2023-10-18T20:03:43+01:00 # Hazem Krimi +*Hi!* + diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 3d2aff4..73dc785 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -1,5 +1,5 @@ {{ $styles := resources.Get "css/baseof.css" | toCSS | minify | fingerprint }} -{{ $scripts := resources.Get "js/baseof.js" | minify | fingerprint }} +{{ $scripts := resources.Get "js/baseof.js" | js.Build | minify | fingerprint }} From 4e31b2877b0396985d8eb57a2e827352e6b19d6c Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Tue, 31 Oct 2023 00:10:41 +0100 Subject: [PATCH 05/60] Header partial wip --- assets/css/baseof.css | 101 ++++++++++++++++++++++--------- assets/css/partials/header.css | 50 +++++++++++++++ assets/icons/arrow.svg | 4 ++ assets/icons/burger.svg | 5 ++ assets/icons/close.svg | 4 ++ assets/icons/cv.svg | 7 +++ assets/icons/double-chevrons.svg | 4 ++ assets/icons/eye.svg | 4 ++ assets/icons/github.svg | 10 +++ assets/icons/linkedin.svg | 5 ++ assets/icons/mail.svg | 4 ++ assets/icons/moon.svg | 3 + assets/icons/rss.svg | 3 + assets/icons/sun.svg | 11 ++++ assets/icons/twitter.svg | 10 +++ assets/images/header-face.png | Bin 0 -> 2294 bytes assets/js/baseof.js | 13 +++- content/_index.md | 2 - layouts/_default/baseof.html | 1 + layouts/index.html | 1 - layouts/partials/header.html | 28 +++++++++ 21 files changed, 239 insertions(+), 31 deletions(-) create mode 100644 assets/css/partials/header.css create mode 100644 assets/icons/arrow.svg create mode 100644 assets/icons/burger.svg create mode 100644 assets/icons/close.svg create mode 100644 assets/icons/cv.svg create mode 100644 assets/icons/double-chevrons.svg create mode 100644 assets/icons/eye.svg create mode 100644 assets/icons/github.svg create mode 100644 assets/icons/linkedin.svg create mode 100644 assets/icons/mail.svg create mode 100644 assets/icons/moon.svg create mode 100644 assets/icons/rss.svg create mode 100644 assets/icons/sun.svg create mode 100644 assets/icons/twitter.svg create mode 100644 assets/images/header-face.png create mode 100644 layouts/partials/header.html diff --git a/assets/css/baseof.css b/assets/css/baseof.css index 2b09541..f032ac6 100644 --- a/assets/css/baseof.css +++ b/assets/css/baseof.css @@ -1,42 +1,89 @@ @font-face { - font-family: 'Open Sans'; - src: url('/fonts/OpenSans.ttf') format('ttf'); - font-weight: normal; - font-style: normal; + font-family: 'Open Sans'; + src: url('/fonts/OpenSans.ttf') format('ttf'); + font-weight: normal; + font-style: normal; } @font-face { - font-family: 'Open Sans'; - src: url('/fonts/OpenSans-Italic.ttf') format('ttf'); - font-weight: normal; - font-style: italic; + font-family: 'Open Sans'; + src: url('/fonts/OpenSans-Italic.ttf') format('ttf'); + font-weight: normal; + font-style: italic; } :root { - /* Colors */ - --black: #131314; - --white: #FFFFFF; - --crimson: #BD1839; - --light-gray: #E7E7E7; + /* Colors */ + --black: #131314; + --white: #ffffff; + --crimson: #bd1839; + --light-gray: #e7e7e7; - /* Background colors */ - --dark-background: #1D1B1B; - --light-background: #FBFBFB; + /* Background colors */ + --dark-background: #1d1b1b; + --light-background: #fbfbfb; - /* Radiuses */ - --card-radius: 30px; - --form-radius: 9px; + /* Radiuses */ + --card-radius: 1.875rem; + --form-radius: 0.563rem; + + /* Shadows */ + --shadow: 0px 4px 8px rgba(0, 0, 0, 0.04); +} + +*, +*::before, +*::after { + box-sizing: border-box; } * { - margin: 0; - padding: 0; - box-sizing: border-box; + margin: 0; } body { - font-size: 16px; - font-family: 'Open Sans', sans-serif; - background-color: var(--background); - color: var(--text); -} \ No newline at end of file + font-family: 'Open Sans', sans-serif; + font-size: 16px; + line-height: 1.5; + -webkit-font-smoothing: antialiased; + + background-color: var(--background); + color: var(--text); + + isolation: isolate; +} + +img, +picture, +video, +canvas, +svg { + display: block; + max-width: 100%; +} + +input, +button, +textarea, +select { + font: inherit; +} + +p, +h1, +h2, +h3, +h4, +h5, +h6 { + overflow-wrap: break-word; +} + +a { + color: var(--text); +} + +.vertical-separator { + border-left: 1px solid rgba(0, 0, 0, .25); + height: 24px; +} diff --git a/assets/css/partials/header.css b/assets/css/partials/header.css new file mode 100644 index 0000000..f25039b --- /dev/null +++ b/assets/css/partials/header.css @@ -0,0 +1,50 @@ +:root { + --header-light-background: var(--white); + --header-dark-background: #676666; +} + +header { + width: 85%; + margin: 3.125rem auto; + padding: 0.938rem 2.188rem; + + border-radius: 0.75rem; + box-shadow: var(--header-shadow); + + background-color: var(--header-background); + color: var(--text); + + text-transform: uppercase; + + display: flex; + align-items: center; + justify-content: space-between; +} + +header #header-face { + display: flex; + align-items: center; + column-gap: 0.625rem; +} + +header #header-face h3 { + font-weight: 600; +} + +header #menus { + display: flex; + align-items: center; + column-gap: 1.563rem; +} + +header #menus a { + text-decoration: none; + font-weight: 600; + font-size: 15px; +} + +header #links { + display: flex; + align-items: center; + column-gap: 1.5rem; +} \ No newline at end of file diff --git a/assets/icons/arrow.svg b/assets/icons/arrow.svg new file mode 100644 index 0000000..0c17470 --- /dev/null +++ b/assets/icons/arrow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/burger.svg b/assets/icons/burger.svg new file mode 100644 index 0000000..0bcaad5 --- /dev/null +++ b/assets/icons/burger.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/icons/close.svg b/assets/icons/close.svg new file mode 100644 index 0000000..7f0b0b0 --- /dev/null +++ b/assets/icons/close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/cv.svg b/assets/icons/cv.svg new file mode 100644 index 0000000..75f7935 --- /dev/null +++ b/assets/icons/cv.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/icons/double-chevrons.svg b/assets/icons/double-chevrons.svg new file mode 100644 index 0000000..74fdfc8 --- /dev/null +++ b/assets/icons/double-chevrons.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/eye.svg b/assets/icons/eye.svg new file mode 100644 index 0000000..d1d2ed5 --- /dev/null +++ b/assets/icons/eye.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/github.svg b/assets/icons/github.svg new file mode 100644 index 0000000..7ace097 --- /dev/null +++ b/assets/icons/github.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/icons/linkedin.svg b/assets/icons/linkedin.svg new file mode 100644 index 0000000..cd6bfdc --- /dev/null +++ b/assets/icons/linkedin.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/icons/mail.svg b/assets/icons/mail.svg new file mode 100644 index 0000000..641501c --- /dev/null +++ b/assets/icons/mail.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/icons/moon.svg b/assets/icons/moon.svg new file mode 100644 index 0000000..8153079 --- /dev/null +++ b/assets/icons/moon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/rss.svg b/assets/icons/rss.svg new file mode 100644 index 0000000..8cac502 --- /dev/null +++ b/assets/icons/rss.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/sun.svg b/assets/icons/sun.svg new file mode 100644 index 0000000..dff001a --- /dev/null +++ b/assets/icons/sun.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/icons/twitter.svg b/assets/icons/twitter.svg new file mode 100644 index 0000000..a8e5115 --- /dev/null +++ b/assets/icons/twitter.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/header-face.png b/assets/images/header-face.png new file mode 100644 index 0000000000000000000000000000000000000000..6854054b0b2401233fd4e8832197c4dc249859ea GIT binary patch literal 2294 zcmV&@}I4(%8<7pEI7BJNJF~&UH-O#P+!DAH}|pbIpzSixts zzm;An>p*$^UW8%&m4)}G@fl6o=|H(~0_qP1#8@OS$}jURHG;1K`9OvGc)}?mqBEYN zoPM=>v9i4h;3%7g&MQv|qW1W=R+1y8}=P{)_T1V;P>wDpe# zPJ4=Yb0>hd1oBRPET2!h6WsmJ)}PHAA%2-&!HQ!e2tw%b3<|<9f~IL)7wF;j&(;0d z6KES(Ii+^2ljHTN`lkXS!(c)=hYdM!KI7nm*~YcSML<=!z8Zh-xjrHh!O-;>6hntT z%fe5>5{4sdEAqFoa>~&bL>>$u-NCqQ0{wkaMLMC!Pc$?W)>|!yuy{hCWPHAZe)RNhYwnCx>D-g+eBU z3_+TzN+28?uK7WR>bht@Ii(EWD64UDhJ$d!D zkYECvm?jihs>YZr7#|tLYa?ak=n2b8K}+TknF)jubH#Jf>CNCsDTB+E8T@Cqfq&kd zi!10(V8;tQ?H1&@_>XusiN~Q)#x?^YU#g)@zzDtR6jI!wOh(3ti`x)R8;a{d^_fE) zS4<}HmGVA3yT8P8RvDTIwaAm1gH7jGl%Jj>U&Yt|*nRv2Hpz`O?*TbFP17ta)>}}7 z%oKyJV$vFEs5)8HOmY?rdLqMnK4+fvCQazfC0#e-s@WXInpc8^GrG2EZH>COvcr0o zWf@{)$ahvcxVhxuVM~R}Bpu=SFrX(>CcoOclW=p= z5i#&*#Wp~`e((UU*Btca)36E12^8F#tCCBaI6PPa^AaE4et;Qr*Mqrb9O*Bx%7B9d zeYjOy!MBEopxnfE_O%#@SnH%)S~^tm;?N)p*$jNgf!%T;SL(^+SS{>1f_!4BIJ{>7 z8B%@Lh+t-Wpldpw|H1%{7G%X#x167(T#kXrc8+b#pSSVS@k3nOK`xcWo^laKJZ_%} zY?9nU?!*Y{*rkQoe{dMG_026WVwLQBwA_zO&BwMT*49_i#X^>%(uu%uv#(f4Co|Yp z>_bXpLXt;JdL|G)(x#5Im4M7nVnc)NKsG|{K^;3WQX#sIw9npy&uoZDa6;Cv&eqRg z>^ShasL3jF2_T?G@k#YQ2eNcL?^^fjG++(qHG(U=zbkRqZhX6LHBKPiyAk- z&+A`hMdFZD0VV4?#mx~gy=lg#EEXB)sNc{hl}u}24P6%@7K7P z39s#A)@uTNCi(`8aJjh0s_LtH*og@hQ!x;oBA4O)b+-?+drh=gY$P)}Oj3DoxqzU> z>glMg7*c=QfK5$eyB=(MZ+NDASYiM|oQ^j-&h96bcef7|ws)5mR9jxgYP$`Kc~LCw zLW$kDMDj|o0WPo&T)ACAaBZHchpxsUQ{x-EZwPTx-Ji{(6E7}%!6Jl-6{+mEjw+1b+ZbL&S2X$_uPLPKMMM#$0i_7@9C zA1mU(ZuSsL!OGkm8{sM(kLBulq<)T%6t;pK3jbO_f1@jo%FESv53Jwl>lZ;7ys2vX zpyxMu1_KZ6cAx@V@;R9FQELf= zOGzBjl2l#^DD1k5x<2V6?k0On zvA37v%SWrz!M%S!#9Ltc$MFZqA~`;xehytcaXLl_o=?Y3j6=uwMP(!iCCaK(;-EpZMPElaAv|$OF^d z%mXxe$jXl#z|i-O{_kg$D!B8(5^1QU20->X%*8Cs;D&@uo*s| zO)p?(1$nEkR2zR$wCFqa)y`>ju^szDafAHKN>!+r6CPqGwOb8A{*td< QH2?qr07*qoM6N<$f_PSC9{>OV literal 0 HcmV?d00001 diff --git a/assets/js/baseof.js b/assets/js/baseof.js index e26d59a..2ded2cc 100644 --- a/assets/js/baseof.js +++ b/assets/js/baseof.js @@ -22,7 +22,18 @@ function updateTheme(theme) { '--background', theme === 'light' ? 'var(--light-background)' : 'var(--dark-background)' ); + root.style.setProperty( + '--header-background', + theme === 'light' + ? 'var(--header-light-background)' + : 'var(--header-dark-background)' + ); + root.style.setProperty( + '--header-shadow', + theme === 'light' ? 'var(--shadow)' : 'none' + ); root.style.setProperty('--text', theme === 'light' ? 'black' : 'white'); + root.style.setProperty('--color', theme === 'light' ? 'black' : 'white'); } const root = document.documentElement; @@ -32,7 +43,7 @@ document.addEventListener('DOMContentLoaded', () => { updateTheme(theme); }); -document.querySelector('#switch-theme').addEventListener('click', () => { +document.querySelector('#theme-toggle').addEventListener('click', () => { theme = theme === 'light' ? 'dark' : 'light'; window.localStorage.setItem('theme', theme); updateTheme(theme); diff --git a/content/_index.md b/content/_index.md index 7ae040f..212df70 100644 --- a/content/_index.md +++ b/content/_index.md @@ -3,7 +3,5 @@ title: "Hazem Krimi" date: 2023-10-18T20:03:43+01:00 --- -# Hazem Krimi - *Hi!* diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 73dc785..4ee2a05 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -14,6 +14,7 @@ + {{ partial "header.html" . }}
{{ block "main" . }}{{ end }}
diff --git a/layouts/index.html b/layouts/index.html index 42487e8..cdb4a08 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -1,4 +1,3 @@ {{ define "main" }} - {{ partial "theme-switch.html" . }} {{ .Content }} {{ end }} \ No newline at end of file diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..79d8cea --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,28 @@ +{{ $styles := resources.Get "css/partials/header.css" | toCSS | minify | +fingerprint }} {{ $headerFaceImage := resources.Get "images/header-face.png" }} + +
+ +
+ Hazem Krimi +

Hazem Krimi

+
+ + +
From c463e30f43057828a5dc10df80fb8c73082b9f70 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Tue, 31 Oct 2023 23:51:54 +0100 Subject: [PATCH 06/60] Desktop header --- assets/css/baseof.css | 3 ++- assets/css/partials/header.css | 21 +++++++++++++++++-- assets/cv.pdf | Bin 0 -> 200191 bytes assets/icons/cv.svg | 10 +++++----- assets/icons/github.svg | 2 +- assets/icons/linkedin.svg | 6 +++--- assets/icons/moon.svg | 2 +- assets/icons/rss.svg | 2 +- assets/icons/twitter.svg | 2 +- assets/js/baseof.js | 7 +++++++ layouts/partials/header.html | 31 +++++++++++++++++++---------- layouts/partials/theme-switch.html | 1 - 12 files changed, 60 insertions(+), 27 deletions(-) create mode 100755 assets/cv.pdf delete mode 100644 layouts/partials/theme-switch.html diff --git a/assets/css/baseof.css b/assets/css/baseof.css index f032ac6..907fba5 100644 --- a/assets/css/baseof.css +++ b/assets/css/baseof.css @@ -84,6 +84,7 @@ a { } .vertical-separator { - border-left: 1px solid rgba(0, 0, 0, .25); + border-left: 1px solid var(--text); height: 24px; + opacity: .25; } diff --git a/assets/css/partials/header.css b/assets/css/partials/header.css index f25039b..ac23ec1 100644 --- a/assets/css/partials/header.css +++ b/assets/css/partials/header.css @@ -5,7 +5,7 @@ header { width: 85%; - margin: 3.125rem auto; + margin: 2.5rem auto; padding: 0.938rem 2.188rem; border-radius: 0.75rem; @@ -47,4 +47,21 @@ header #links { display: flex; align-items: center; column-gap: 1.5rem; -} \ No newline at end of file +} + +header #links .linkedin, +header #links .github, +header #links .cv-paper-flip { + stroke: var(--text); +} + +header #links .twitter, +header #links .rss, +header #links .cv, +header #links .moon { + fill: var(--text); +} + +header #links #theme-toggle { + cursor: pointer; +} diff --git a/assets/cv.pdf b/assets/cv.pdf new file mode 100755 index 0000000000000000000000000000000000000000..7269c7ab93d4c4f32a4a2616a6c3f3258cc4f120 GIT binary patch literal 200191 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 literal 0 HcmV?d00001 diff --git a/assets/icons/cv.svg b/assets/icons/cv.svg index 75f7935..0182d16 100644 --- a/assets/icons/cv.svg +++ b/assets/icons/cv.svg @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/assets/icons/github.svg b/assets/icons/github.svg index 7ace097..6025fe2 100644 --- a/assets/icons/github.svg +++ b/assets/icons/github.svg @@ -1,6 +1,6 @@ - + diff --git a/assets/icons/linkedin.svg b/assets/icons/linkedin.svg index cd6bfdc..2b8f0af 100644 --- a/assets/icons/linkedin.svg +++ b/assets/icons/linkedin.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/assets/icons/moon.svg b/assets/icons/moon.svg index 8153079..c673d7a 100644 --- a/assets/icons/moon.svg +++ b/assets/icons/moon.svg @@ -1,3 +1,3 @@ - + diff --git a/assets/icons/rss.svg b/assets/icons/rss.svg index 8cac502..df767b4 100644 --- a/assets/icons/rss.svg +++ b/assets/icons/rss.svg @@ -1,3 +1,3 @@ - + diff --git a/assets/icons/twitter.svg b/assets/icons/twitter.svg index a8e5115..a7b06be 100644 --- a/assets/icons/twitter.svg +++ b/assets/icons/twitter.svg @@ -1,6 +1,6 @@ - + diff --git a/assets/js/baseof.js b/assets/js/baseof.js index 2ded2cc..606cf1d 100644 --- a/assets/js/baseof.js +++ b/assets/js/baseof.js @@ -34,6 +34,13 @@ function updateTheme(theme) { ); root.style.setProperty('--text', theme === 'light' ? 'black' : 'white'); root.style.setProperty('--color', theme === 'light' ? 'black' : 'white'); + + fetch(`../icons/${theme === 'light' ? 'sun' : 'moon'}.svg`) + .then((response) => response.text()) + .then((svg) => { + document.querySelector('#theme-toggle').innerHTML = svg; + }) + .catch(() => {}) } const root = document.documentElement; diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 79d8cea..a625b38 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -1,8 +1,15 @@ -{{ $styles := resources.Get "css/partials/header.css" | toCSS | minify | -fingerprint }} {{ $headerFaceImage := resources.Get "images/header-face.png" }} +{{ define "styles" }} + {{ $styles := resources.Get "css/partials/header.css" | toCSS | minify | fingerprint }} + + +{{ end }} + +{{ $headerFaceImage := resources.Get "images/header-face.png" }} +{{ $sun := resources.Get "icons/sun.svg" }} +{{ $moon := resources.Get "icons/moon.svg" }} +{{ $cv := resources.Get "cv.pdf" }}
-
Hazem Krimi

Hazem Krimi

@@ -15,14 +22,16 @@ fingerprint }} {{ $headerFaceImage := resources.Get "images/header-face.png" }} Contact
diff --git a/layouts/partials/theme-switch.html b/layouts/partials/theme-switch.html deleted file mode 100644 index 7cc38aa..0000000 --- a/layouts/partials/theme-switch.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 8eeb9fc97423e54b6d16a77bc08226ab1e1a1606 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Thu, 2 Nov 2023 15:49:57 +0100 Subject: [PATCH 07/60] Enable media queries --- assets/css/partials/header.css | 23 +++++++++++++++++++++-- layouts/_default/baseof.html | 11 ++++++++--- layouts/partials/header.html | 8 +++++--- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/assets/css/partials/header.css b/assets/css/partials/header.css index ac23ec1..8ea4605 100644 --- a/assets/css/partials/header.css +++ b/assets/css/partials/header.css @@ -51,7 +51,8 @@ header #links { header #links .linkedin, header #links .github, -header #links .cv-paper-flip { +header #links .cv-paper-flip, +header #burger svg path { stroke: var(--text); } @@ -62,6 +63,24 @@ header #links .moon { fill: var(--text); } -header #links #theme-toggle { +header #burger { + display: none; +} + +header #links #theme-toggle, header #burger { cursor: pointer; } + +@media only screen and (max-width: 768px) { + header { + padding: 0.938rem 1.25rem; + } + + header #menus, header #links { + display: none; + } + + header #burger { + display: initial; + } +} \ No newline at end of file diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 4ee2a05..8920ce8 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -1,20 +1,25 @@ -{{ $styles := resources.Get "css/baseof.css" | toCSS | minify | fingerprint }} -{{ $scripts := resources.Get "js/baseof.js" | js.Build | minify | fingerprint }} +{{ $styles := resources.Get "css/baseof.css" | toCSS | minify }} +{{ $scripts := resources.Get "js/baseof.js" | js.Build | minify }} - + + + {{ block "styles" . }}{{ end }} + {{ block "title" . }} {{ .Site.Title }} {{ end }} + {{ partial "header.html" . }} +
{{ block "main" . }}{{ end }}
diff --git a/layouts/partials/header.html b/layouts/partials/header.html index a625b38..7382703 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -1,7 +1,8 @@ -{{ define "styles" }} - {{ $styles := resources.Get "css/partials/header.css" | toCSS | minify | fingerprint }} - +{{ define "styles" }} + {{ $styles := resources.Get "css/partials/header.css" | toCSS | minify }} + + {{ end }} {{ $headerFaceImage := resources.Get "images/header-face.png" }} @@ -34,4 +35,5 @@ data-sun="{{ $sun.Permalink }}" > + {{ readFile "assets/icons/burger.svg" | safeHTML }} From 3f8f491da078406921d12ad7327dc7c90802253f Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Thu, 2 Nov 2023 19:33:35 +0100 Subject: [PATCH 08/60] Header partial --- assets/css/baseof.css | 10 +++++ assets/css/partials/header.css | 72 ++++++++++++++++++++++++---------- assets/js/baseof.js | 36 +++++++++++------ assets/js/partials/header.js | 57 +++++++++++++++++++++++++++ content/_index.md | 4 +- layouts/_default/baseof.html | 3 +- layouts/partials/header.html | 43 ++++++++++++++++++-- 7 files changed, 186 insertions(+), 39 deletions(-) create mode 100644 assets/js/partials/header.js diff --git a/assets/css/baseof.css b/assets/css/baseof.css index 907fba5..cd9296a 100644 --- a/assets/css/baseof.css +++ b/assets/css/baseof.css @@ -53,6 +53,11 @@ body { isolation: isolate; } +main { + width: 85%; + margin: auto; +} + img, picture, video, @@ -88,3 +93,8 @@ a { height: 24px; opacity: .25; } + +hr { + color: var(--text); + opacity: .25; +} diff --git a/assets/css/partials/header.css b/assets/css/partials/header.css index 8ea4605..bc4d6ae 100644 --- a/assets/css/partials/header.css +++ b/assets/css/partials/header.css @@ -1,26 +1,35 @@ :root { --header-light-background: var(--white); --header-dark-background: #676666; + --nav-light-background: var(--white); + --nav-dark-background: #121212; +} + +header, nav { + width: 85%; + border-radius: 0.75rem; + text-transform: uppercase; } header { - width: 85%; margin: 2.5rem auto; padding: 0.938rem 2.188rem; - border-radius: 0.75rem; - box-shadow: var(--header-shadow); - background-color: var(--header-background); color: var(--text); - text-transform: uppercase; - display: flex; align-items: center; justify-content: space-between; } +nav { + background-color: var(--nav-background); + display: none; + position: fixed; + flex-direction: column; +} + header #header-face { display: flex; align-items: center; @@ -31,16 +40,29 @@ header #header-face h3 { font-weight: 600; } +header #menus a, nav #menus a { + text-decoration: none; + font-weight: 600; + font-size: 15px; +} + header #menus { display: flex; align-items: center; column-gap: 1.563rem; } -header #menus a { - text-decoration: none; - font-weight: 600; - font-size: 15px; +nav #menus { + display: flex; + flex-direction: column; + align-items: end; + justify-content: center; + row-gap: 3.125rem; +} + +nav hr { + margin-top: 3.125rem; + margin-bottom: 1.25rem; } header #links { @@ -49,17 +71,27 @@ header #links { column-gap: 1.5rem; } -header #links .linkedin, -header #links .github, -header #links .cv-paper-flip, -header #burger svg path { +nav #links { + display: flex; + justify-content: end; + column-gap: 1.5rem; +} + +nav #links .theme-toggler { + margin-right: auto; +} + +#links .linkedin, +#links .github, +#links .cv-paper-flip, +#burger svg path { stroke: var(--text); } -header #links .twitter, -header #links .rss, -header #links .cv, -header #links .moon { +#links .twitter, +#links .rss, +#links .cv, +#links .moon { fill: var(--text); } @@ -67,12 +99,12 @@ header #burger { display: none; } -header #links #theme-toggle, header #burger { +.theme-toggler, #burger { cursor: pointer; } @media only screen and (max-width: 768px) { - header { + header, nav { padding: 0.938rem 1.25rem; } diff --git a/assets/js/baseof.js b/assets/js/baseof.js index 606cf1d..8710898 100644 --- a/assets/js/baseof.js +++ b/assets/js/baseof.js @@ -1,4 +1,4 @@ -function getInitialTheme() { +function initTheme() { const persistedColorPreference = window.localStorage.getItem('theme'); const hasPersistedPreference = typeof persistedColorPreference === 'string'; @@ -16,7 +16,7 @@ function getInitialTheme() { return 'light'; } -function updateTheme(theme) { +function loadTheme() { root.style.setProperty('--theme', theme); root.style.setProperty( '--background', @@ -28,6 +28,12 @@ function updateTheme(theme) { ? 'var(--header-light-background)' : 'var(--header-dark-background)' ); + root.style.setProperty( + '--nav-background', + theme === 'light' + ? 'var(--nav-light-background)' + : 'var(--nav-dark-background)' + ); root.style.setProperty( '--header-shadow', theme === 'light' ? 'var(--shadow)' : 'none' @@ -38,20 +44,24 @@ function updateTheme(theme) { fetch(`../icons/${theme === 'light' ? 'sun' : 'moon'}.svg`) .then((response) => response.text()) .then((svg) => { - document.querySelector('#theme-toggle').innerHTML = svg; + themeTogglers.forEach(themeToggler => { + themeToggler.innerHTML = svg; + }); }) - .catch(() => {}) + .catch(() => {}); +} + +function updateTheme() { + theme = theme === 'light' ? 'dark' : 'light'; + window.localStorage.setItem('theme', theme); + loadTheme(); } const root = document.documentElement; -let theme = getInitialTheme(); +const themeTogglers = document.querySelectorAll('.theme-toggler'); -document.addEventListener('DOMContentLoaded', () => { - updateTheme(theme); -}); +let theme = initTheme(); -document.querySelector('#theme-toggle').addEventListener('click', () => { - theme = theme === 'light' ? 'dark' : 'light'; - window.localStorage.setItem('theme', theme); - updateTheme(theme); -}); +document.addEventListener('DOMContentLoaded', loadTheme); + +themeTogglers.forEach(themerToggler => themerToggler.addEventListener('click', updateTheme)); diff --git a/assets/js/partials/header.js b/assets/js/partials/header.js new file mode 100644 index 0000000..414a250 --- /dev/null +++ b/assets/js/partials/header.js @@ -0,0 +1,57 @@ +function loadBurger() { + fetch(`../icons/${burgerOpen ? 'close' : 'burger'}.svg`) + .then((response) => response.text()) + .then((svg) => { + burgerPlaceholder.innerHTML = svg; + mobileNavigation.style.display = burgerOpen ? 'flex' : 'none'; + mobileNavigation.style.top = burgerOpen + ? `calc(${header.getBoundingClientRect().y}px + ${ + header.getBoundingClientRect().height + }px + 0.625rem)` + : 'initial'; + mobileNavigation.style.left = burgerOpen + ? `${header.getBoundingClientRect().x}px` + : 'initial'; + }) + .catch(() => {}); +} + +function updateBurger() { + burgerOpen = !burgerOpen; + loadBurger(); +} + +function resetBurger() { + burgerOpen = false; + loadBurger(); +} + +function resetBurgerWhenWindowResized() { + if (window.innerWidth > 768) { + resetBurger(); + } +} + +function resetBurgerWhenClickedOutside(event) { + if ( + mobileNavigation.style.display === 'flex' && + event.target !== header && + event.target !== mobileNavigation && + !mobileNavigation.contains(event.target) + ) { + resetBurger(); + } +} + +const burgerPlaceholder = document.querySelector('#burger'); +const header = document.querySelector('header'); +const mobileNavigation = document.querySelector('nav'); +let burgerOpen = false; + +window.addEventListener('resize', resetBurgerWhenWindowResized); + +document.addEventListener('DOMContentLoaded', loadBurger); + +document.addEventListener('click', resetBurgerWhenClickedOutside); + +burgerPlaceholder.addEventListener('click', updateBurger); diff --git a/content/_index.md b/content/_index.md index 212df70..eaf888b 100644 --- a/content/_index.md +++ b/content/_index.md @@ -3,5 +3,7 @@ title: "Hazem Krimi" date: 2023-10-18T20:03:43+01:00 --- -*Hi!* +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam porta magna eu turpis aliquet aliquet. Sed ut laoreet sapien, in fermentum diam. Suspendisse potenti. Integer sit amet felis tincidunt, fermentum risus ut, fringilla quam. In eu lorem ante. Aliquam nunc ligula, iaculis at viverra at, rutrum vitae lorem. Vestibulum sit amet velit nisi. Nullam quis varius lorem. Morbi ac risus ac odio sodales bibendum id sed diam. Fusce sagittis est rhoncus enim rutrum bibendum. + +Proin vitae imperdiet tortor. Maecenas non enim tempor, egestas risus eget, malesuada felis. Vestibulum eu eleifend velit. Nullam ut eleifend tortor, sit amet pretium ipsum. In placerat hendrerit quam, quis mollis libero. Morbi rutrum ex nec dictum consectetur. Sed vestibulum blandit placerat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Quisque rhoncus cursus mi non pulvinar. Aliquam sed suscipit urna. diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 8920ce8..520017b 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -15,7 +15,8 @@ {{ end }} - + + {{ block "scripts" . }}{{ end }} {{ partial "header.html" . }} diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 7382703..11ee293 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -5,9 +5,17 @@ {{ end }} +{{ define "scripts" }} + {{ $scripts := resources.Get "js/partials/header.js" | js.Build | minify }} + + +{{ end }} + {{ $headerFaceImage := resources.Get "images/header-face.png" }} {{ $sun := resources.Get "icons/sun.svg" }} {{ $moon := resources.Get "icons/moon.svg" }} +{{ $burger := resources.Get "icons/burger.svg" }} +{{ $close := resources.Get "icons/close.svg" }} {{ $cv := resources.Get "cv.pdf" }}
@@ -30,10 +38,37 @@ {{ readFile "assets/icons/cv.svg" | safeHTML }}
- {{ readFile "assets/icons/burger.svg" | safeHTML }} +
+ + From 21aa9a293a7c3e34ef978a9a1cb5d8579e3942e7 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Fri, 3 Nov 2023 17:51:57 +0100 Subject: [PATCH 09/60] Vercel preview hugo config --- vercel.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 vercel.json diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..fdd88a4 --- /dev/null +++ b/vercel.json @@ -0,0 +1,5 @@ +{ + "buildCommand": "hugo", + "devCommand": "hugo server", + "outputDirectory": "public" +} \ No newline at end of file From 81b2326fdf52f27b5c1b0286adf4f51b38d3ee3f Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Fri, 3 Nov 2023 17:57:32 +0100 Subject: [PATCH 10/60] Deploy to GitHub pages --- .github/workflows/hugo.yaml | 78 +++++++++++++++++++++++++++++++++++++ vercel.json | 5 --- 2 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/hugo.yaml delete mode 100644 vercel.json diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml new file mode 100644 index 0000000..f0de645 --- /dev/null +++ b/.github/workflows/hugo.yaml @@ -0,0 +1,78 @@ +# Sample workflow for building and deploying a Hugo site to GitHub Pages +name: Deploy Hugo site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: + - rebuild + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: 'pages' + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.120.2 + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: sudo snap install dart-sass + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + - name: Install Node.js dependencies + run: '[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true' + - name: Build with Hugo + env: + # For maximum backward compatibility with Hugo modules + HUGO_ENVIRONMENT: production + HUGO_ENV: production + run: | + hugo \ + --gc \ + --minify \ + --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/vercel.json b/vercel.json deleted file mode 100644 index fdd88a4..0000000 --- a/vercel.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "buildCommand": "hugo", - "devCommand": "hugo server", - "outputDirectory": "public" -} \ No newline at end of file From 6570af8f967d40acedca3d499a1ed1594bd3c976 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Fri, 3 Nov 2023 18:13:50 +0100 Subject: [PATCH 11/60] Use relative links --- layouts/partials/header.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/layouts/partials/header.html b/layouts/partials/header.html index 11ee293..e6d748e 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -20,7 +20,7 @@
- Hazem Krimi + Hazem Krimi

Hazem Krimi