feat(Footer): new Footer

mack-mac
mackt 7 months ago
parent cc4d5de06d
commit 4bb06d152a

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.5337 8.61286C9.18105 8.24294 10.0057 8.46785 10.3756 9.1152L12.9631 13.6433C12.9848 13.6813 13.0045 13.7199 13.0221 13.759C14.6371 13.0898 16.4057 12.7208 18.2596 12.7208C19.911 12.7208 21.4946 13.0136 22.9624 13.5506L25.4969 9.1152C25.8668 8.46785 26.6915 8.24294 27.3388 8.61286C27.9862 8.98277 28.2111 9.80742 27.8412 10.4548L25.3995 14.7276C29.0214 16.9421 31.5536 20.7905 31.9932 25.2602H4.52588C4.94612 20.9875 7.27852 17.2826 10.647 15.0299C10.6374 15.0145 10.628 14.9988 10.6189 14.9829L8.03136 10.4548C7.66145 9.80742 7.88636 8.98277 8.5337 8.61286ZM13.7317 20.135C13.7317 20.8495 13.1524 21.4288 12.4379 21.4288C11.7234 21.4288 11.1442 20.8495 11.1442 20.135C11.1442 19.4205 11.7234 18.8413 12.4379 18.8413C13.1524 18.8413 13.7317 19.4205 13.7317 20.135ZM24.0816 21.4288C24.7961 21.4288 25.3753 20.8495 25.3753 20.135C25.3753 19.4205 24.7961 18.8413 24.0816 18.8413C23.3671 18.8413 22.7878 19.4205 22.7878 20.135C22.7878 20.8495 23.3671 21.4288 24.0816 21.4288Z" fill="white" fill-opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.1464 6.01321C23.1943 6.60254 23.3243 8.20045 21.7496 9.95453C20.6104 11.2022 19.2272 11.9333 17.7125 11.8246C17.5842 10.3186 18.182 8.98278 19.199 7.9024C20.1222 6.89542 21.7433 6.07633 23.1453 6L23.1464 6.01321ZM27.9459 14.2787C25.9931 15.3914 25.0261 16.9004 25.0386 18.9026C25.0386 18.9054 25.0385 18.9106 25.0383 18.918C25.0305 19.181 24.9389 22.2836 28.625 23.9141C27.9177 25.9222 25.4893 30.3816 22.6634 30.4198C21.8719 30.4198 21.2391 30.191 20.5867 29.9551C19.8925 29.7041 19.1761 29.4451 18.2226 29.4451C17.1919 29.4451 16.4156 29.7208 15.6883 29.979C15.0709 30.1983 14.4888 30.405 13.8163 30.4198C11.0155 30.4991 8.33038 25.5933 7.58557 23.5911C7.02852 22.0704 6.75 20.5937 6.75 19.1639C6.75 14.3257 10.1955 11.9477 13.4377 11.9007C14.3377 11.9007 15.3774 12.2534 16.2655 12.5547C16.9276 12.7792 17.5055 12.9752 17.8784 12.9752C18.1799 12.9752 18.6717 12.8048 19.2751 12.5958C20.3254 12.2319 21.7134 11.7509 23.0232 11.8479C25.2014 12.0035 26.8537 12.8108 27.9459 14.2787Z" fill="white" fill-opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.5 8.4375H6.75C6.43934 8.4375 6.1875 8.68934 6.1875 9V25.5C6.1875 25.8107 6.43934 26.0625 6.75 26.0625H28.5C28.8107 26.0625 29.0625 25.8107 29.0625 25.5V9C29.0625 8.68934 28.8107 8.4375 28.5 8.4375ZM6.75 6.75C5.50736 6.75 4.5 7.75736 4.5 9V25.5C4.5 26.7426 5.50736 27.75 6.75 27.75H15L13.5 30.75H21.75L20.25 27.75H28.5C29.7426 27.75 30.75 26.7426 30.75 25.5V9C30.75 7.75736 29.7426 6.75 28.5 6.75H6.75ZM19.1295 13.4573C19.7673 12.7469 19.7146 12.0997 19.6952 11.8611L19.6948 11.8557C19.127 11.8866 18.4704 12.2184 18.0965 12.6262C17.6846 13.0637 17.4425 13.6047 17.4945 14.2147C18.108 14.2587 18.6682 13.9626 19.1295 13.4573ZM20.4616 17.0813C20.4565 16.2704 20.8482 15.6593 21.639 15.2086C21.1967 14.6141 20.5275 14.2871 19.6454 14.2241C19.1149 14.1849 18.5527 14.3796 18.1274 14.527C17.883 14.6117 17.6838 14.6807 17.5617 14.6807C17.4107 14.6807 17.1766 14.6013 16.9085 14.5104C16.5488 14.3884 16.1277 14.2455 15.7632 14.2455C14.4501 14.2646 13.0547 15.2276 13.0547 17.1871C13.0547 17.7662 13.1675 18.3642 13.3931 18.9801C13.6947 19.791 14.7822 21.7779 15.9166 21.7458C16.1889 21.7398 16.4247 21.656 16.6747 21.5672C16.9693 21.4626 17.2836 21.351 17.7011 21.351C18.0873 21.351 18.3774 21.4559 18.6586 21.5576C18.9228 21.6531 19.1791 21.7458 19.4996 21.7458C20.6441 21.7303 21.6276 19.9242 21.9141 19.1109C20.4212 18.4506 20.4583 17.194 20.4614 17.0875L20.4616 17.0813Z" fill="white" fill-opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,3 @@
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.75 8.4375H25.5C25.8107 8.4375 26.0625 8.68934 26.0625 9V27.75C26.0625 28.0607 25.8107 28.3125 25.5 28.3125H9.75C9.43934 28.3125 9.1875 28.0607 9.1875 27.75V9C9.1875 8.68934 9.43934 8.4375 9.75 8.4375ZM7.5 9C7.5 7.75736 8.50736 6.75 9.75 6.75H25.5C26.7426 6.75 27.75 7.75736 27.75 9V27.75C27.75 28.9926 26.7426 30 25.5 30H9.75C8.50736 30 7.5 28.9926 7.5 27.75V9ZM16.5 25.5C16.0858 25.5 15.75 25.8358 15.75 26.25C15.75 26.6642 16.0858 27 16.5 27H18.75C19.1642 27 19.5 26.6642 19.5 26.25C19.5 25.8358 19.1642 25.5 18.75 25.5H16.5Z" fill="white" fill-opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 718 B

@ -0,0 +1,39 @@
import Link from 'next/link';
import { agreementList } from './data';
export default function Copyright({ className }: { className?: string }) {
return (
<div className={`w-[1200px] mx-auto text-[rgba(255,255,255,0.4)] text-[12px] leading-[17px] ${className}`}>
{/* 备案信息 */}
<p className="w-fit mt-[25px] mx-auto mb-[6px]">
<Link
className="hover:text-[rgba(255,255,255,0.7)]"
href="https://beian.miit.gov.cn/#/Integrated/index/"
target="_blank"
>
ICP2024190175-1
</Link>
&nbsp;&nbsp;&nbsp;
<Link
className="hover:text-[rgba(255,255,255,0.7)]"
href="https://beian.mps.gov.cn/#/query/webSearch?code=44030002002777"
target="_blank"
>
44030002002777
</Link>
&nbsp;&nbsp;&nbsp;
<span> Shenzhen QueYue Culture Technology Co., Ltd.</span>
</p>
{/* 协议 */}
<p className="w-fit mx-auto mt-[5px]">
{agreementList.map(({ name, url }) => (
<Link className="mx-[4px] hover:text-[rgba(255,255,255,0.7)]" href={url} key={name} target="_blank">
{name}
</Link>
))}
</p>
</div>
);
}

@ -0,0 +1,19 @@
export default function DownLoadItem({
name,
imgUrl,
className,
}: {
name: string;
imgUrl: string;
className?: string;
}) {
return (
<div className={`w-[56px] cursor-pointer ${className}`}>
<div
className={`w-[36px] h-[36px] mx-auto bg-no-repeat bg-cover`}
style={{ backgroundImage: `url(${imgUrl})` }}
/>
<div className="w-fit mt-[3px] mx-auto text-[12px] leading-[17px]">{name}</div>
</div>
);
}

@ -0,0 +1,23 @@
import Copyright from './Copyright';
import FooterDownload from './FooterDownload';
import FooterPlatform from './FooterPlatform';
import FooterSocial from './FooterSocial';
export default function Footer() {
return (
<footer className="h-[320px] pt-[48px] bg-[rgba(0,0,0,0.9)]">
<div className="w-[1200px] mx-auto">
<div className="flex flex-row">
{/* 开放平台 */}
<FooterPlatform />
{/* 社交账号 */}
<FooterSocial className="ml-[126px]" />
{/* 下载客户端 */}
<FooterDownload className="ml-[110px]" />
</div>
<Copyright className="absolute bottom-[48px]" />
</div>
</footer>
);
}

@ -0,0 +1,15 @@
import { downloadList } from './data';
import DownLoadItem from './DownLoadItem';
export default function FooterPlatform({ className }: { className?: string }) {
return (
<div className={`w-auto text-[#fff] text-opacity-60 ${className}`}>
<h3 className="text-[12px] leading-[17px]"></h3>
<ul className="flex flex-row mt-[24px] gap-[40px]">
{downloadList.map((item, index) => (
<DownLoadItem key={index} name={item.name} imgUrl={item.imgUrl} />
))}
</ul>
</div>
);
}

@ -0,0 +1,20 @@
import Link from 'next/link';
import { platformList } from './data';
export default function FooterPlatform({ className }: { className?: string }) {
return (
<div className={`w-auto text-[#fff] text-opacity-60 ${className}`}>
<h3 className="text-[12px] leading-[17px]"></h3>
<ul className="mt-[24px]">
{platformList.map((item, index) => (
<li key={index} className="mt-[9px]">
<Link className="text-[12px] leading-[17px]" href={item.url}>
{item.name}
</Link>
</li>
))}
</ul>
</div>
);
}

@ -0,0 +1,30 @@
import Link from 'next/link';
import { socialList } from './data';
const Line = ({ data }: { data: Array<{ name: string; url: string; target?: string }> }) => {
return (
<div className="flex flex-row gap-[24px]">
{data.map((item, index) => (
<li key={index} className="mb-[9px]">
<Link className="text-[12px] leading-[17px]" href={item.url} target={item.target || '_blank'}>
{item.name}
</Link>
</li>
))}
</div>
);
};
export default function FooterSocial({ className }: { className?: string }) {
return (
<div className={`w-auto text-[#fff] text-opacity-60 ${className}`}>
<h3 className="text-[12px] leading-[17px]"></h3>
<ul className="mt-[24px]">
{socialList.map((line, index) => (
<Line key={index} data={line} />
))}
</ul>
</div>
);
}

@ -1,23 +1,6 @@
export default function Footer() { import { agreementList } from './data';
const agreementList = [
{
name: '知识产权说明',
url: 'http://cdn.indie.cn/html/agreement/intellectualPropertyDescription.html',
},
{
name: '注册协议',
url: 'http://cdn.indie.cn/html/agreement/registrationAgreement.html',
},
{
name: '隐私政策',
url: 'http://cdn.indie.cn/html/agreement/privacyPolicy.html',
},
{
name: '投诉指引',
url: 'http://cdn.indie.cn/html/agreement/complaintGuidelines.html',
},
];
export default function Footer() {
return ( return (
<footer className="absolute bottom-[40px] flex flex-col items-center w-full justify-center text-center text-[12px] leading-[16.8px]"> <footer className="absolute bottom-[40px] flex flex-col items-center w-full justify-center text-center text-[12px] leading-[16.8px]">
<div className="w-[1200px] mx-auto"> <div className="w-[1200px] mx-auto">

@ -0,0 +1,96 @@
export const agreementList = [
{
name: '知识产权说明',
url: 'http://cdn.indie.cn/html/agreement/intellectualPropertyDescription.html',
},
{
name: '注册协议',
url: 'http://cdn.indie.cn/html/agreement/registrationAgreement.html',
},
{
name: '隐私政策',
url: 'http://cdn.indie.cn/html/agreement/privacyPolicy.html',
},
{
name: '投诉指引',
url: 'http://cdn.indie.cn/html/agreement/complaintGuidelines.html',
},
];
export const platformList = [
{
name: '雀乐音乐人',
url: '#',
},
{
name: '雀乐商场',
url: '#',
},
];
export const socialList: { name: string; url: string; target?: '_blank' | '_self' | '_parent' | '_top' }[][] = [
[
{
name: '雀乐微博',
url: 'https://weibo.com/u/1886232237',
},
{
name: '雀乐公众号',
url: '#',
},
{
name: '邮箱',
url: '#',
},
{
name: '豆瓣',
url: '#',
},
],
[
{
name: '雀乐微信群',
url: '#',
},
{
name: '关于雀乐',
url: '/about',
target: '_self',
},
{
name: '抖音',
url: '#',
},
{
name: '小红书',
url: '#',
},
{
name: 'B站',
url: '#',
},
],
];
export const downloadList = [
{
name: 'iPhone版',
downloadUrl: '#',
imgUrl: '/img/download/footer_ios.svg',
},
{
name: 'Android版',
downloadUrl: '#',
imgUrl: '/img/download/footer_android.svg',
},
{
name: 'Mac版',
downloadUrl: '#',
imgUrl: '/img/download/footer_mac.svg',
},
{
name: 'Pad版',
downloadUrl: '#',
imgUrl: '/img/download/footer_pad.svg',
},
];

@ -1,6 +1,7 @@
export { default as Logo } from './Logo'; export { default as Logo } from './Logo';
export { default as Header } from './Header/Header'; export { default as Header } from './Header/Header';
export { default as Footer } from './Footer'; export { default as Footer } from './Footer/Footer';
export { default as MiniFooter } from './Footer/MiniFooter';
// Icon // Icon
export { default as Equalizer } from './Icon/Equalizer'; export { default as Equalizer } from './Icon/Equalizer';

Loading…
Cancel
Save