+
{/* Hero Number - Total Contributions */}
(({ userData, funMe
{/* Desktop: Original layout */}
-
+
{/* Left: Main Contribution Metric */}
(({ userData, funMe
Total Contributions
-
+
@@ -485,7 +515,7 @@ const ClassicLayout = forwardRef(({ userData, funMe
{/* Mobile: Top Language Pills */}
-
{userData.totalContributions.toLocaleString()}
- {userData.totalCommits.toLocaleString()} commits
+ {userData.totalCommits.toLocaleString()} commits
- {userData.totalPRs} PRs
+ {userData.totalPRs} PRs
- {userData.totalIssues} issues
+ {userData.totalIssues} issues
- {userData.totalPRReviews} reviews
+ {userData.totalPRReviews} reviews
{otherCount > 0 && (
- {otherCount} other
+ {otherCount} other
)}
+
Top Languages
{userData.topLanguages.slice(0, 3).map((lang, idx) => (
@@ -508,36 +538,44 @@ const ClassicLayout = forwardRef(({ userData, funMe
{/* Desktop: Original Language Cards */}
-
+
{userData.topLanguages.map((lang, idx) => (
-
+
-
{/* Mobile: Compact Activity List */}
-
-
))}
-
-
- {lang.name}
-
-
- #{idx + 1}
+
-
+
-
+
+
+
+ {lang.name}
+
+
+ #{idx + 1}
+
+
+
{lang.percent.toFixed(1)}%
+
+
+
+ {lang.percent.toFixed(1)}%
-
-
-
-
+
Activity Highlights
@@ -569,7 +607,7 @@ const ClassicLayout = forwardRef(({ userData, funMe
{/* Desktop: Original Activity Grid */}
-
+
(({ userData, funMe
{/* Top Repository Spotlight */}
- {userData.topRepos[0] && (
-
-
-
- {/* Mobile: Centered layout */}
-
-
π
- Top Repository
- {userData.topRepos[0].name}
-
- {userData.topRepos[0].contributions} commits
- β’
- {userData.topRepos[0].stargazers} stars
-
+
+
+
+ {/* Mobile: Centered layout */}
+ (({ userData, funMe
+
{/* Mobile: Show simplified heatmap or message */}
- {hasTopRepo ? 'π' : 'π'}
+
+ {hasTopRepo ? 'Top Repository' : 'Future Top Repository'}
-
- {/* Desktop: Original horizontal layout */}
-
-
{/* Contribution Heatmap */}
-
- )}
+ β Top Repository
- {userData.topRepos[0].name}
-
- {userData.topRepos[0].contributions} commits
+ {hasTopRepo ? (
+ <>
+
+
+ {/* Desktop / Export layout */}
+ {topRepo!.name}
+
+ {topRepo!.contributions} commits
β’
- {userData.topRepos[0].stargazers} stars
+ {topRepo!.stargazers} stars
+ >
+ ) : (
+ + Launch something bold, rack up a few commits, and we'll spotlight it here. +
+ )} +
+
+
+
+ {hasTopRepo ? 'β Top Repository' : 'β Waiting for Your Top Repo' }
+
+
+ {hasTopRepo ? topRepo!.name : 'Ship a repo worthy of the spotlight'}
- π
+ {hasTopRepo ? (
+
+ {topRepo!.contributions} commits
+ β’
+ {topRepo!.stargazers} stars
+
+ ) : (
+ + Kick off a fresh project or breathe life into an old oneβonce it gains momentum, it will take over this showcase automatically. +
+ )}{hasTopRepo ? 'π' : 'π'}
(({ userData, funMe
-
- {/* Desktop: Full heatmap */}
- View on desktop for full contribution calendar
-
+ {!isExport && (
+
@@ -720,12 +783,12 @@ const ClassicLayout = forwardRef
+
+ )}
+ {/* Desktop / Export: Full heatmap */}
+
+ View on desktop for full contribution calendar
+
+
{/* Mobile: Centered with icon above */}
-
+
{/* Desktop: Icon on left */}
-
{funMessage}
+
diff --git a/index.css b/index.css
index dcbdd8c..df8a53a 100644
--- a/index.css
+++ b/index.css
@@ -46,6 +46,79 @@ h1, h2, h3, h4, h5, h6, strong {
display: none !important;
}
+.export-mode .sm\:grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
+}
+
+.export-mode .sm\:grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
+}
+
+.export-mode .sm\:grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
+}
+
+/* Force desktop typography scale while exporting so viewport width doesn't shrink fonts */
+.export-mode .sm\:text-xs,
+.export-mode .md\:text-xs {
+ font-size: 0.75rem !important;
+ line-height: 1rem !important;
+}
+
+.export-mode .sm\:text-sm,
+.export-mode .md\:text-sm {
+ font-size: 0.875rem !important;
+ line-height: 1.25rem !important;
+}
+
+.export-mode .sm\:text-base,
+.export-mode .md\:text-base {
+ font-size: 1rem !important;
+ line-height: 1.5rem !important;
+}
+
+.export-mode .sm\:text-lg,
+.export-mode .md\:text-lg {
+ font-size: 1.125rem !important;
+ line-height: 1.75rem !important;
+}
+
+.export-mode .sm\:text-xl,
+.export-mode .md\:text-xl {
+ font-size: 1.25rem !important;
+ line-height: 1.75rem !important;
+}
+
+.export-mode .sm\:text-2xl,
+.export-mode .md\:text-2xl {
+ font-size: 1.5rem !important;
+ line-height: 2rem !important;
+}
+
+.export-mode .sm\:text-3xl,
+.export-mode .md\:text-3xl {
+ font-size: 1.875rem !important;
+ line-height: 2.25rem !important;
+}
+
+.export-mode .sm\:text-4xl,
+.export-mode .md\:text-4xl {
+ font-size: 2.25rem !important;
+ line-height: 2.5rem !important;
+}
+
+.export-mode .sm\:text-5xl,
+.export-mode .md\:text-5xl {
+ font-size: 3rem !important;
+ line-height: 1 !important;
+}
+
+.export-mode .sm\:text-6xl,
+.export-mode .md\:text-6xl {
+ font-size: 3.75rem !important;
+ line-height: 1 !important;
+}
+
/* Utility to hide scrollbars without disabling scroll */
body.no-scrollbar {
scrollbar-width: none;
diff --git a/pages/HomePage.tsx b/pages/HomePage.tsx
index 865faa7..fcf5e16 100644
--- a/pages/HomePage.tsx
+++ b/pages/HomePage.tsx
@@ -19,12 +19,12 @@ const HomePage: React.FC = () => {
};
return (
-
{funMessage}
+
-
-
+
+
-
+
-
+
GitWrap{' '}
{
2025
-
+
Get your personalized GitHub year in review. See your coding journey, celebrate your achievements, and share your story.