Skip to content

Commit 1cc6e65

Browse files
Merge branch 'main' into mobile-theme-preset-carousel
2 parents 3fae7c8 + 09ffa49 commit 1cc6e65

7 files changed

Lines changed: 856 additions & 16 deletions

File tree

app/components/CustomizeCTA.test.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,46 @@ describe('CustomizeCTA', () => {
141141
expect(decorativeIcon).toBeTruthy();
142142
});
143143
});
144+
describe('responsive rendering', () => {
145+
it('uses responsive flex layout classes', () => {
146+
const { container } = render(<CustomizeCTA />);
147+
148+
const layoutContainer = container.querySelector('.flex.flex-col.md\\:flex-row');
149+
150+
expect(layoutContainer).toBeTruthy();
151+
});
152+
153+
it('uses responsive text alignment classes', () => {
154+
const { container } = render(<CustomizeCTA />);
155+
156+
const contentContainer = container.querySelector('.text-center.md\\:text-left');
157+
158+
expect(contentContainer).toBeTruthy();
159+
});
160+
161+
it('uses responsive heading sizing classes', () => {
162+
render(<CustomizeCTA />);
163+
164+
const heading = screen.getByRole('heading', {
165+
level: 2,
166+
name: 'Want to fine-tune your monolith?',
167+
});
168+
169+
expect(heading.className).toContain('text-2xl');
170+
expect(heading.className).toContain('md:text-3xl');
171+
});
172+
173+
it('uses responsive button padding classes', () => {
174+
render(<CustomizeCTA />);
175+
176+
const link = screen.getByRole('link');
177+
178+
const button = link.querySelector('span');
179+
180+
expect(button?.className).toContain('px-4');
181+
expect(button?.className).toContain('md:px-7');
182+
});
183+
});
144184

145185
describe('responsive breakpoints', () => {
146186
it('renders all layout structure elements across viewports', () => {

app/customize/components/ExportPanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ export function ExportPanel({
171171
? 'Add a GitHub username to enable image downloads'
172172
: format === 'action'
173173
? 'Download is not available in GitHub Action mode'
174-
: 'Download custom monolith layout as an image'
174+
: `Download badge as commitpulse-${username}.svg`
175175
}
176176
className={`relative inline-flex items-center gap-2 px-4 py-2 rounded-xl text-xs font-bold transition-all duration-200 ${
177177
!hasUsername || isDownloading || format === 'action'

app/page.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { Footer } from '@/app/components/Footer';
1313

1414
import { FeatureCard, FeatureCardsSection } from '@/components/FeatureCards';
1515
import { DiscordButton } from '@/components/DiscordButton';
16+
import { WallOfLove } from '@/components/WallOfLove';
1617

1718
const Icons = {
1819
Github: () => (
@@ -181,6 +182,11 @@ export default function LandingPage() {
181182
</button>
182183
) : null}
183184
</div>
185+
{mounted && username.length === 0 && (
186+
<p className="text-amber-500 text-xs mt-1 self-start pl-1">
187+
Please enter a GitHub username to copy your badge link.
188+
</p>
189+
)}
184190
{username.length === 39 && (
185191
<p className="text-red-500 text-xs mt-1 self-start pl-1">
186192
GitHub username limit reached (39 characters maximum)
@@ -373,6 +379,9 @@ export default function LandingPage() {
373379
desc="Sophisticated 3D projection formulas turn 2D data into digital architecture."
374380
/>
375381
</FeatureCardsSection>
382+
383+
<WallOfLove />
384+
376385
<Footer />
377386
</main>
378387
</div>

0 commit comments

Comments
 (0)