Skip to content

Add fake Google sign-in Easter egg#24

Open
McGeerDev wants to merge 2 commits intomainfrom
feat/fun/little-pranks-01
Open

Add fake Google sign-in Easter egg#24
McGeerDev wants to merge 2 commits intomainfrom
feat/fun/little-pranks-01

Conversation

@McGeerDev
Copy link
Owner

@McGeerDev McGeerDev commented Feb 2, 2026

Summary

  • Adds a "Sign in with Google" button to the footer with a pixel-perfect Google logo
  • Clicking it opens a modal: "Why are you trying to sign into some random guy's portfolio website?"
  • "Fair point" button dismisses the modal
  • Also adds fun-pranks.md to .gitignore for local prank idea tracking

Test plan

  • Verify button renders in footer on desktop
  • Verify button renders in footer on mobile
  • Click button — modal appears with message
  • Click "Fair point" — modal dismisses
  • Click backdrop — modal dismisses
  • Verify button is NOT in the header

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added an interactive sign-in-style button in the footer that opens a full-screen modal with explanatory text, an emoji, and a dismiss action; modal closes by tapping outside or using the provided button.
  • Chores

    • Updated project ignores to exclude a personal notes file.

A "Sign in with Google" button in the footer opens a
modal asking why you'd sign into a random portfolio.
Purely for laughs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ea212770-df9d-4dcb-9685-4b464bfed0f5

📥 Commits

Reviewing files that changed from the base of the PR and between 1f5a8fd and 5e3ec0a.

📒 Files selected for processing (1)
  • src/components/fake-sign-in.tsx

📝 Walkthrough

Walkthrough

Adds a new FakeSignIn React component that renders a Google-style sign-in button which toggles a full-screen modal; integrates the component into the site footer; and adds fun-pranks.md to .gitignore.

Changes

Cohort / File(s) Summary
Configuration
\.gitignore
Added fun-pranks.md under Personal notes to ignore that file.
New Component
src/components/fake-sign-in.tsx
New client-side React component FakeSignIn that renders a Google-like sign-in button and toggles a full-screen semi-transparent modal. Modal contains header, explanatory text, emoji, and a dismiss ("Fair point") button; overlay and propagation handling added.
Footer Integration
src/components/footer.tsx
Imported and rendered FakeSignIn in the Footer beneath the name block; no other footer logic changes.

Sequence Diagram(s)

sequenceDiagram
  participant User as User
  participant Footer as Footer
  participant Fake as FakeSignIn
  participant Modal as ModalOverlay

  User->>Footer: sees FakeSignIn button
  User->>Fake: clicks "Sign in with Google" button
  Fake->>Modal: set showModal = true (render overlay)
  Modal->>User: displays modal content
  User->>Modal: clicks overlay or "Fair point"
  Modal->>Fake: set showModal = false (hide overlay)
  Fake->>Footer: return to idle state
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I hopped into the footer, sly and neat,
A button that teases with a playful beat,
A modal blooms with a wink and a grin,
Click "Fair point" — and the prank tucks in. 🥕✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding a fake Google sign-in button Easter egg to the footer.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/fun/little-pranks-01

Comment @coderabbitai help to get the list of available commands and usage tips.

@McGeerDev
Copy link
Owner Author

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/fake-sign-in.tsx`:
- Around line 35-59: The modal rendering guarded by showModal and toggled with
setShowModal lacks dialog semantics and keyboard/focus handling; update the
modal container to use an accessible dialog pattern by adding role="dialog",
aria-modal="true", and aria-labelledby referencing the h2 (e.g., the element
with text "Hold on a second..." or its id), add an Escape key handler that calls
setShowModal(false) (attach in the FakeSignIn component lifecycle), set initial
focus to the primary interactive element inside the dialog (the "Fair point"
button) when opening, implement focus trapping while the modal is open and
restore focus to the previously focused element on close, and ensure clicks
outside still close via the overlay handler already using setShowModal.
- Around line 10-13: The two button elements in the FakeSignIn component are
missing an explicit type and will default to type="submit"; update both buttons
(the one with onClick={() => setShowModal(true)} that opens the modal and the
other button that closes or triggers actions) to include type="button" so they
don't accidentally submit surrounding forms—look for the elements referencing
setShowModal and any onClick handlers and add type="button" to each.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 4719eb69-586b-4665-b40a-4d146d3ae76f

📥 Commits

Reviewing files that changed from the base of the PR and between d37b2f1 and 1f5a8fd.

📒 Files selected for processing (3)
  • .gitignore
  • src/components/fake-sign-in.tsx
  • src/components/footer.tsx

Comment on lines +35 to +59
{showModal && (
<div
className="fixed inset-0 z-50 flex items-center justify-center bg-black/50"
onClick={() => setShowModal(false)}
>
<div
className="mx-4 max-w-md rounded-lg bg-white p-8 text-center shadow-xl"
onClick={(e) => e.stopPropagation()}
>
<p className="text-4xl">🤨</p>
<h2 className="mt-4 text-xl font-bold tracking-wider">
Hold on a second...
</h2>
<p className="mt-3 text-gray-600">
Why are you trying to sign into some random guy&apos;s portfolio
website?
</p>
<button
onClick={() => setShowModal(false)}
className="mt-6 border border-black px-6 py-2 text-sm uppercase tracking-wider transition-colors hover:bg-black hover:text-white"
>
Fair point
</button>
</div>
</div>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat -n src/components/fake-sign-in.tsx

Repository: McGeerDev/portfolio

Length of output: 2820


Use an accessible dialog pattern instead of a click-only overlay.

This modal lacks dialog semantics and keyboard/focus handling. Screen-reader users won't know it's a modal, keyboard users cannot dismiss it with Escape, and focus is not managed or trapped. Switch to an accessible dialog primitive, or add role="dialog", aria-modal, aria-labelledby pointing to the h2, Escape key handling, initial focus placement, focus trapping, and focus return on close.

🧰 Tools
🪛 Biome (2.4.6)

[error] 36-39: Static Elements should not be interactive.

(lint/a11y/noStaticElementInteractions)


[error] 36-39: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.

(lint/a11y/useKeyWithClickEvents)


[error] 40-43: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.

(lint/a11y/useKeyWithClickEvents)


[error] 40-43: Static Elements should not be interactive.

(lint/a11y/noStaticElementInteractions)


[error] 52-55: Provide an explicit type prop for the button element.

(lint/a11y/useButtonType)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/fake-sign-in.tsx` around lines 35 - 59, The modal rendering
guarded by showModal and toggled with setShowModal lacks dialog semantics and
keyboard/focus handling; update the modal container to use an accessible dialog
pattern by adding role="dialog", aria-modal="true", and aria-labelledby
referencing the h2 (e.g., the element with text "Hold on a second..." or its
id), add an Escape key handler that calls setShowModal(false) (attach in the
FakeSignIn component lifecycle), set initial focus to the primary interactive
element inside the dialog (the "Fair point" button) when opening, implement
focus trapping while the modal is open and restore focus to the previously
focused element on close, and ensure clicks outside still close via the overlay
handler already using setShowModal.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant