This is a solution to the Clipboard Landing Page challenge on Frontend Mentor.
- Desktop
video-desktop.mp4
- Mobile
- Solution URL: https://github.com/rashidshamloo/fem_031_clipboard-landing-page/
- Live Site URL: https://rashidshamloo.github.io/fem_031_clipboard-landing-page/
- Vite / React.js
- TypeScript
- Material-UI
- Semantic HTML5 markup
-
I have written about my process in two blog posts. you can check them out here:
- Using double arrow functions in React to pass another prop alongside the event to the handleEvent function.
- How
Theming
in Material-UI works and customizing it in TypeScript - Using the customized theme variables inside components
- Styling Material-UI components using the
sx
styles - Customizing Material UI components in multiple ways in TypeScript:
styled()
utility- wrapper component
- targeting classes directly
- using
inherit
and setting the style on the parent element
- Using
Grid
,Box
,Typography
,Link
,Tooltip
etc. components in Material-UI - Using
CssBaseline
in Material-UI to remove the default paddings/margins - Using the
Dialog
component to show a modal in Material UI and setting the contained element's properties using thePaperProps
property - Using
TransitionComponent
andTransitionProps
to add animations in Material UI - Extending interfaces in TypeScript
- Using
Omit<INTERFACE_NAME,'KEY'>
to replace/override a key when extending interfaces in TypeScript - How to use
React.forwardRef<element,props>((props,ref)=>{})
to add ref to a customizedLink
component that is the child of a customizedTooltip
component. (took hours... I was trying to add ref to the parent element by mistake...) Generics
,Unions
, andCasting
in TypeScript- Using
getBoundingClientRect()
to get an element's position - Using
scrollTo()
andScrollIntoView()
to scroll to positions/elements - Using
scroll-behavior:smooth
in CSS to enable smooth scrolling - Using
scroll-snap-type
,scroll-snap-position
andscroll-snap-stop
to add scroll snapping to various elements - Detecting when an element is in view using intersection observer and
react-intersection-observer
- Implementing a full page side dot-navigation from scratch using
react-intersection-observer
- using
React.forwardRef()
to pass refs to functional components in React - Using
Exclude
to exclude a type in union types in TypeScript - Using
Object.assign()
to merge objects - Exporting variables after modifying them with
export {VAR}
- Portfolio - rashidshamloo.ir
- Frontend Mentor - @rashidshamloo
- Twitter - @rashidshamloo