Conversation
* Add new UI enhancement components - RoleTypewriter: cycles through prior role titles before settling on the current one, with a blinking cursor - ScrollReveal: fades/slides content in via IntersectionObserver as it scrolls into view, with a safety-net timeout so content is never permanently stuck invisible - BackToTop: floating button that appears after scrolling and smooth-scrolls to the top of the page - ReadingProgressBar / ShareButton: blog post reading aids Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> * Wire skip-link, back-to-top, and OG share image into the root layout - Add a visually-hidden skip-to-content link for keyboard/screen-reader users - Give <main> an id so the skip-link has a target - Mount the global BackToTop button - Point openGraph/twitter metadata at the new social share image Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> * Generate branded OG/Twitter share image Adds scripts/og-image/generate-og-image.js (sharp-composited from the profile photo + Tableau Color Blind brand palette) and commits the generated public/images/og-image.png. Wired into metadata in a prior commit. Documented regeneration in the README, same pattern as the existing icon generator. Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> * Default to system color-scheme preference for first-time visitors Previously the theme always defaulted to light until a visitor made an explicit choice (persisted in localStorage). Now, when there's no saved preference, honor prefers-color-scheme: dark before falling back to light. Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> * Add mobile hamburger nav and animated active-link indicator - Replace the always-expanded mobile nav block with a hamburger toggle that smoothly expands/collapses (CSS grid-rows trick, no JS height measuring), closing automatically on route change - Extract a shared DesktopNavLink with an animated underline that scales in on hover and stays put in the accent color for the active page Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> * Add reading time, progress bar, share, and scroll-reveal to blog pages - lib/blog.ts: estimate reading time from rendered word count, exposed as BlogPost.readingTimeMinutes - Blog listing: show '<date> · X min read' per post; reveal each post card via ScrollReveal (staggered) instead of animating on mount; add the role typewriter to the page header - Blog post: mount a top-of-viewport ReadingProgressBar, add a ShareButton (Web Share API with clipboard fallback) next to 'Back to Blog', and show reading time alongside the date Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> * Add role typewriter and scroll-reveal animations across all pages Replace the static 'PRODUCT MANAGER & SOFTWARE DESIGNER' role tag with the RoleTypewriter component (Home, About, Contact, Certifications, Projects, Hub, Links, V2ME), and swap each page's on-mount fade-in-up sections for ScrollReveal so below-the-fold content animates in as it's scrolled into view rather than all at once on load. Co-authored-by: Thomas Bohn <bohn.tl@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Sandbox validated and ready for production
This PR was opened automatically after
sandboxwas validated bythis workflow run.
npm run build): passed515f032f5d507ec647299ecdc61781f328818dfbCommits included in this promotion
Review checklist
This PR requires manual human review and must be merged by a person.
This automation will never merge it.