From fb542bb5b5447ff4eeeef21ea4c24fcbf1c60a14 Mon Sep 17 00:00:00 2001 From: Ahmed Al-Taiar Date: Sun, 6 Oct 2024 00:31:59 -0400 Subject: [PATCH] Polishing touches and tweaks --- web/config/tailwind.config.js | 14 ++++++++- .../components/ColorPicker/ColorPicker.tsx | 2 ++ .../ContactCard/ContactCard/ContactCard.tsx | 4 +-- .../components/FormTextList/FormTextList.tsx | 27 ++++++++++------- .../Portrait/PortraitForm/PortraitForm.tsx | 12 ++------ .../components/Project/Project/Project.tsx | 29 +++++++++++-------- .../Project/ProjectForm/ProjectForm.tsx | 8 ++--- .../Resume/ResumeForm/ResumeForm.tsx | 12 ++------ .../components/ThemeToggle/ThemeToggle.tsx | 11 ++----- web/src/components/Title/Titles/Titles.tsx | 6 ++++ .../Title/TitlesForm/TitlesForm.tsx | 3 ++ web/src/lib/tus.ts | 3 +- web/src/pages/HomePage/HomePage.tsx | 26 +++++++++++++++-- 13 files changed, 96 insertions(+), 61 deletions(-) diff --git a/web/config/tailwind.config.js b/web/config/tailwind.config.js index 492d82e..c427613 100644 --- a/web/config/tailwind.config.js +++ b/web/config/tailwind.config.js @@ -142,4 +142,16 @@ export const theme = { export const darkMode = ['class', '[data-theme="dark"]'] export const plugins = [require('daisyui')] -export const daisyui = { themes: ['light', 'dark'] } +export const daisyui = { + themes: [ + 'light', + { + dark: { + ...require('daisyui/src/theming/themes')['dark'], + 'base-100': '#212121', + 'base-200': '#1d1d1d', + 'base-300': '#191919', + }, + }, + ], +} diff --git a/web/src/components/ColorPicker/ColorPicker.tsx b/web/src/components/ColorPicker/ColorPicker.tsx index debecab..f479241 100644 --- a/web/src/components/ColorPicker/ColorPicker.tsx +++ b/web/src/components/ColorPicker/ColorPicker.tsx @@ -22,6 +22,7 @@ const ColorPicker = ({ color, setColor }: ColorPickerProps) => { - {list.map((item, i) => ( ))} diff --git a/web/src/components/Portrait/PortraitForm/PortraitForm.tsx b/web/src/components/Portrait/PortraitForm/PortraitForm.tsx index 0b9387d..df625b8 100644 --- a/web/src/components/Portrait/PortraitForm/PortraitForm.tsx +++ b/web/src/components/Portrait/PortraitForm/PortraitForm.tsx @@ -1,4 +1,4 @@ -import { useRef, useState } from 'react' +import { useState } from 'react' import { Meta, UploadResult } from '@uppy/core' import type { @@ -56,13 +56,7 @@ const CREATE_PORTRAIT_MUTATION: TypedDocumentNode< ` const PortraitForm = ({ portrait }: PortraitFormProps) => { - const [fileId, _setFileId] = useState(portrait?.fileId) - const fileIdRef = useRef(fileId) - - const setFileId = (fileId: string) => { - _setFileId(fileId) - fileIdRef.current = fileId - } + const [fileId, setFileId] = useState(portrait?.fileId) const unloadAbortController = new AbortController() @@ -96,7 +90,7 @@ const PortraitForm = ({ portrait }: PortraitFormProps) => { setFileId(result.successful[0]?.uploadURL) window.addEventListener( 'beforeunload', - (e) => handleBeforeUnload(e, [fileIdRef.current]), + (e) => handleBeforeUnload(e, [fileId]), { once: true, signal: unloadAbortController.signal, diff --git a/web/src/components/Project/Project/Project.tsx b/web/src/components/Project/Project/Project.tsx index 71be951..4938381 100644 --- a/web/src/components/Project/Project/Project.tsx +++ b/web/src/components/Project/Project/Project.tsx @@ -46,18 +46,23 @@ const Project = ({ project }: Props) => { <>

Links

- {project.links.map((link, i) => ( - - - {link} - - ))} +
    + {project.links.map((link, i) => ( +
  • + +
  • + ))} +
)} diff --git a/web/src/components/Project/ProjectForm/ProjectForm.tsx b/web/src/components/Project/ProjectForm/ProjectForm.tsx index 26c0da3..c98cbd5 100644 --- a/web/src/components/Project/ProjectForm/ProjectForm.tsx +++ b/web/src/components/Project/ProjectForm/ProjectForm.tsx @@ -198,6 +198,7 @@ const ProjectForm = (props: ProjectFormProps) => {
{
diff --git a/web/src/components/Resume/ResumeForm/ResumeForm.tsx b/web/src/components/Resume/ResumeForm/ResumeForm.tsx index 42239f4..6962b0b 100644 --- a/web/src/components/Resume/ResumeForm/ResumeForm.tsx +++ b/web/src/components/Resume/ResumeForm/ResumeForm.tsx @@ -1,4 +1,4 @@ -import { useRef, useState } from 'react' +import { useState } from 'react' import { Meta, UploadResult } from '@uppy/core' import type { @@ -55,13 +55,7 @@ const CREATE_RESUME_MUTATION: TypedDocumentNode< ` const ResumeForm = ({ resume }: ResumeFormProps) => { - const [fileId, _setFileId] = useState(resume?.fileId) - const fileIdRef = useRef(fileId) - - const setFileId = (fileId: string) => { - _setFileId(fileId) - fileIdRef.current = fileId - } + const [fileId, setFileId] = useState(resume?.fileId) const unloadAbortController = new AbortController() @@ -95,7 +89,7 @@ const ResumeForm = ({ resume }: ResumeFormProps) => { setFileId(result.successful[0]?.uploadURL) window.addEventListener( 'beforeunload', - (e) => handleBeforeUnload(e, [fileIdRef.current]), + (e) => handleBeforeUnload(e, [fileId]), { once: true, signal: unloadAbortController.signal, diff --git a/web/src/components/ThemeToggle/ThemeToggle.tsx b/web/src/components/ThemeToggle/ThemeToggle.tsx index b5e60a8..0b55cc0 100644 --- a/web/src/components/ThemeToggle/ThemeToggle.tsx +++ b/web/src/components/ThemeToggle/ThemeToggle.tsx @@ -8,7 +8,7 @@ const DARK_THEME = 'dark' const ThemeToggle = () => { const [theme, setTheme] = useState( - localStorage.getItem('theme') ? localStorage.getItem('theme') : LIGHT_THEME + localStorage.getItem('theme') ?? LIGHT_THEME ) const handleToggle = (e: React.ChangeEvent) => { @@ -37,13 +37,8 @@ const ThemeToggle = () => { checked={theme === DARK_THEME} onChange={handleToggle} /> - - - - + + ) } diff --git a/web/src/components/Title/Titles/Titles.tsx b/web/src/components/Title/Titles/Titles.tsx index cd61a67..daad259 100644 --- a/web/src/components/Title/Titles/Titles.tsx +++ b/web/src/components/Title/Titles/Titles.tsx @@ -23,6 +23,12 @@ export const Titles = ({ titles, className }: TitlesProps) => { backDelay={1000} startWhenVisible loop + onStringTyped={(pos, self) => { + if (pos === 0) { + self.stop() + setTimeout(() => self.start(), 2500) + } + }} /> )} diff --git a/web/src/components/Title/TitlesForm/TitlesForm.tsx b/web/src/components/Title/TitlesForm/TitlesForm.tsx index d04c30d..0644740 100644 --- a/web/src/components/Title/TitlesForm/TitlesForm.tsx +++ b/web/src/components/Title/TitlesForm/TitlesForm.tsx @@ -56,6 +56,9 @@ const TitlesForm = ({ titles }: TitlesFormProps) => { return (
+

+ The first one gets displayed for longer +

{Array.from({ length: MAX_TITLES }).map((_, i) => (