Skip to content

Commit 8743f89

Browse files
Merge branch 'master' into master
2 parents 772db3d + f8f437f commit 8743f89

File tree

9 files changed

+290
-111
lines changed

9 files changed

+290
-111
lines changed

CODEOWNERS

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
# For more details, read the following article on GitHub: https://help.github.com/articles/about-codeowners/.
66

77
# The default owners are automatically added as reviewers when you open a pull request unless different owners are specified in the file.
8-
* @AceTheCreator @thulieblack @Mayaleeeee @ashmit-coder
8+
* @AceTheCreator @thulieblack @Mayaleeeee @TenzDelek
99

10-
README.md @AceTheCreator @thulieblack @Mayaleeeee @ashmit-coder
11-
12-
#codeTriagers: vishvamsinh28
10+
README.md @AceTheCreator @thulieblack @Mayaleeeee @TenzDelek

components/Footer/footer.tsx

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,36 @@
11
import React, { JSX } from 'react';
22
import ILink from '../illustration/link';
3-
import socials, { SocialWithIcon } from '../../config/socials';
3+
import Socials from "./socials";
44

55
function Footer(): JSX.Element {
66
return (
77
<div className="container" data-test="footer">
88
<div
9-
className="w-full flex justify-between items-center p-4 sm:flex-col sm:gap-3"
9+
className="w-full flex flex-row justify-between items-center p-2 md:p-4 gap-4 sm:flex-col sm:gap-3"
1010
data-test="footer-asyncAPI-logo"
1111
>
12-
<div className="mt-2 text-[14px] text-gray-100 ">
12+
{/* Code of Conduct Section */}
13+
<div className="text-[16px] md:text-[18px] text-gray-100 flex items-center flex-shrink-0 sm:hidden">
1314
<a
1415
href="https://github.com/asyncapi/community/blob/master/CODE_OF_CONDUCT.md"
1516
target="_blank"
1617
rel="noreferrer"
1718
className="hover:underline text-white duration-200 ease-in-out flex items-center"
1819
data-test="code-of-conduct"
1920
>
20-
<span> Code of Conduct </span>
21-
<span>
22-
<ILink className="w-4 ml-2" fill="white" />
23-
</span>
21+
<span>Code of Conduct</span>
22+
<ILink className="w-3 md:w-5 ml-1 md:ml-2" fill="white" />
2423
</a>
2524
</div>
26-
<div></div>
27-
<div className="flex items-center justify-between sm:flex-col sm:items-center">
28-
<div className="text-white text-center">
29-
Made with ❤️ by AsyncAPI contributors. By the community for the
30-
community!
31-
</div>
32-
<div className="w-[0.9px] h-4 bg-white ml-4 sm:hidden" />
33-
<div className="ml-4 flex justify-between items-center gap-2 sm:mt-4">
34-
{socials.map((social: SocialWithIcon) => {
35-
const IconComponent = social.icon;
36-
return (
37-
<a
38-
key={social.name}
39-
href={social.href}
40-
target="_blank"
41-
rel="noreferrer"
42-
className="rounded-lg flex items-center justify-center hover:border-[#AD20E2] duration-150 ease-in-out"
43-
data-test={`footer-${social.name}`}
44-
>
45-
<IconComponent className="w-[20px] h-[20px]" fill="white" />
46-
</a>
47-
);
48-
})}
25+
26+
{/* "Made with ❤️" and Socials Section - Grouped together */}
27+
<div className="flex flex-row items-center gap-4 text-center sm:flex-col sm:items-center">
28+
<span className="text-white text-[16px] md:text-[18px] leading-tight">
29+
Made with ❤️ by AsyncAPI contributors. By the community for the community!
30+
</span>
31+
<div className="w-[1px] h-6 bg-white sm:hidden" />
32+
<div className="flex items-center gap-2 flex-shrink-0">
33+
<Socials />
4934
</div>
5035
</div>
5136
</div>

components/Footer/socials.tsx

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import React, { JSX } from 'react';
2+
import LinkedIn from '../illustration/Socials/LinkedIn';
3+
import Github from '../illustration/Socials/Github';
4+
import X from '../illustration/Socials/X';
5+
import Youtube from '../illustration/Socials/Youtube';
6+
7+
function Socials(): JSX.Element {
8+
return (
9+
<div className="social-wrapper" data-test="social-wrapper">
10+
<ul className="inline-flex list-none justify-center font-['Poppins',sans-serif]">
11+
<li className="icon linkedin relative bg-white rounded-full m-[5px] w-[35px] h-[35px] text-lg flex justify-center items-center flex-col shadow-md cursor-pointer transition-all duration-200 hover:bg-[#0077b5] hover:text-white" data-test="footer-icon-linkedin">
12+
<a
13+
href="https://www.linkedin.com/company/asyncapi"
14+
target="_blank"
15+
rel="noreferrer"
16+
className="w-full h-full flex justify-center items-center"
17+
data-test="footer-Linkedin"
18+
>
19+
<span className="tooltip absolute top-0 text-sm bg-white text-white py-[5px] px-[8px] rounded-md shadow-md opacity-0 pointer-events-none transition-all duration-300" data-test="footer-tooltip-linkedin">
20+
LinkedIn
21+
</span>
22+
<LinkedIn className="h-[1em]" fill="currentColor" />
23+
</a>
24+
</li>
25+
<li className="icon github relative bg-white rounded-full m-[5px] w-[35px] h-[35px] text-lg flex justify-center items-center flex-col shadow-md cursor-pointer transition-all duration-200 hover:bg-[#333] hover:text-white" data-test="footer-icon-github">
26+
<a
27+
href="https://github.com/asyncapi"
28+
target="_blank"
29+
rel="noreferrer"
30+
className="w-full h-full flex justify-center items-center"
31+
data-test="footer-Github"
32+
>
33+
<span className="tooltip absolute top-0 text-sm bg-white text-white py-[5px] px-[8px] rounded-md shadow-md opacity-0 pointer-events-none transition-all duration-300" data-test="footer-tooltip-github">
34+
GitHub
35+
</span>
36+
<Github className="h-[1.4em]" fill="currentColor" />
37+
</a>
38+
</li>
39+
<li className="icon twitter relative bg-white rounded-full m-[5px] w-[35px] h-[35px] text-lg flex justify-center items-center flex-col shadow-md cursor-pointer transition-all duration-200 hover:bg-[#333] hover:text-white" data-test="footer-icon-twitter">
40+
<a
41+
href="https://x.com/asyncapispec"
42+
target="_blank"
43+
rel="noreferrer"
44+
className="w-full h-full flex justify-center items-center"
45+
data-test="footer-Twitter(X)"
46+
>
47+
<span className="tooltip absolute top-0 text-sm bg-white text-white py-[5px] px-[8px] rounded-md shadow-md opacity-0 pointer-events-none transition-all duration-300" data-test="footer-tooltip-twitter">
48+
Twitter
49+
</span>
50+
<X className="h-[1.4em]" fill="currentColor" />
51+
</a>
52+
</li>
53+
<li className="icon youtube relative bg-white rounded-full m-[5px] w-[35px] h-[35px] text-lg flex justify-center items-center flex-col shadow-md cursor-pointer transition-all duration-200 hover:bg-[#ff0000] hover:text-white" data-test="footer-icon-youtube">
54+
<a
55+
href="https://www.youtube.com/asyncapi"
56+
target="_blank"
57+
rel="noreferrer"
58+
className="w-full h-full flex justify-center items-center"
59+
data-test="footer-youtube"
60+
>
61+
<span className="tooltip absolute top-0 text-sm bg-white text-white py-[5px] px-[8px] rounded-md shadow-md opacity-0 pointer-events-none transition-all duration-300" data-test="footer-tooltip-youtube">
62+
YouTube
63+
</span>
64+
<Youtube className="h-[1.4em]" fill="currentColor" />
65+
</a>
66+
</li>
67+
</ul>
68+
</div>
69+
);
70+
}
71+
72+
export default Socials;

components/Header/header.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function Header(): JSX.Element {
2727
level="h1"
2828
typeStyle="heading-lg"
2929
>
30-
AsyncAPI Conference 2026
30+
AsyncAPI Conference {new Date().getFullYear()}
3131
</Heading>
3232
</div>
3333
<div className="w-[624px] sm:w-full text-center">

config/speakers.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343
},
4444
{
4545
"id": 7,
46-
"name": "Prachi Jamdade",
47-
"title": "Developer Advocate at Gravitee",
48-
"img": "/img/speaker-images/san-jose/Prachi.webp",
46+
"name": "Kay James",
47+
"title": "Product Marketing Manager at Gravitee",
48+
"img": "/img/speaker-images/san-jose/Kay.webp",
4949
"city": ["California"]
5050
},
5151
{

cypress/e2e/Footer.cy.ts

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,62 @@ describe('Footer links', () => {
3636
it('Linkedin should redirect to correct page', () => {
3737
cy.getTestData('footer-Linkedin').invoke('removeAttr', 'target').click();
3838

39-
cy.origin('https://www.linkedin.com/company/asyncapi/', () => {
40-
cy.url().should('eq', 'https://www.linkedin.com/company/asyncapi/');
39+
cy.origin('https://www.linkedin.com', () => {
40+
cy.url().should('include', 'linkedin.com/company/asyncapi');
4141
});
4242
});
4343

4444
it('Twitter(X) should redirect to correct page', () => {
4545
cy.getTestData('footer-Twitter(X)').invoke('removeAttr', 'target').click();
4646

47-
cy.origin('https://x.com/asyncapispec', () => {
48-
cy.url().should('match', /.*asyncapispec.*/);
47+
cy.origin('https://x.com', () => {
48+
cy.url().should('include', 'asyncapispec');
4949
});
5050
});
5151

52-
it('Should Contain AsycAPI Conference Logo', () => {
52+
it('YouTube should redirect to correct page', () => {
53+
cy.getTestData('footer-youtube')
54+
.should('have.attr', 'href', 'https://www.youtube.com/asyncapi');
55+
});
56+
57+
it('Should Contain AsyncAPI Conference Logo', () => {
5358
cy.getTestData('footer-asyncAPI-logo').should('be.visible');
5459
});
60+
61+
describe('Social Media Icons', () => {
62+
beforeEach(() => {
63+
cy.visit('/');
64+
});
65+
66+
it('Should display social media icons', () => {
67+
cy.getTestData('social-wrapper').should('exist');
68+
cy.getTestData('footer-icon-linkedin').should('exist');
69+
cy.getTestData('footer-icon-github').should('exist');
70+
cy.getTestData('footer-icon-twitter').should('exist');
71+
cy.getTestData('footer-icon-youtube').should('exist');
72+
});
73+
74+
const socialPlatforms = [
75+
{ dataTest: 'footer-tooltip-linkedin', name: 'LinkedIn' },
76+
{ dataTest: 'footer-tooltip-github', name: 'GitHub' },
77+
{ dataTest: 'footer-tooltip-twitter', name: 'Twitter' },
78+
{ dataTest: 'footer-tooltip-youtube', name: 'YouTube' },
79+
];
80+
81+
socialPlatforms.forEach((platform) => {
82+
it(`Should display tooltip when hovering over ${platform.name} icon`, () => {
83+
cy.getTestData(platform.dataTest).invoke(
84+
'addClass',
85+
'show-for-test'
86+
);
87+
cy.getTestData(platform.dataTest).should(
88+
'be.visible'
89+
);
90+
cy.getTestData(platform.dataTest).should(
91+
'contain',
92+
platform.name
93+
);
94+
});
95+
});
96+
});
5597
});

0 commit comments

Comments
 (0)