parent
2cbdc00a27
commit
bd6d0ada99
After Width: | Height: | Size: 352 B |
@ -0,0 +1,23 @@
|
|||||||
|
import { CommentForm, CommentHeader, CommentList } from '@/components';
|
||||||
|
|
||||||
|
export default function Comment({
|
||||||
|
commentList,
|
||||||
|
className,
|
||||||
|
totalCommentReply,
|
||||||
|
}: {
|
||||||
|
commentList: any;
|
||||||
|
className?: string;
|
||||||
|
totalCommentReply: number;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div className={className}>
|
||||||
|
<CommentForm />
|
||||||
|
{!!totalCommentReply && (
|
||||||
|
<>
|
||||||
|
<CommentHeader count={totalCommentReply} />
|
||||||
|
<CommentList commentList={commentList} />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
export default function CommentItem() {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
export default function CommentHeader({ count }: { count: number }) {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-row items-center justify-between">
|
||||||
|
<div className="flex flex-row items-center text-[15px] leading-[21px] gap-[12px]">
|
||||||
|
<div className="text-base">全部评论</div>
|
||||||
|
<div className="text-[rgba(0,0,0,0.4)]">{`${count}条`}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex flex-row items-center text-[14px] leading-[19.6px] gap-[12px]">
|
||||||
|
<div>热门</div>
|
||||||
|
<div className="text-[rgba(0,0,0,0.4)]">|</div>
|
||||||
|
<div className="text-[rgba(0,0,0,0.4)]">最新</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
export default function CommentItem() {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
export default function CommentList({ commentList }: { commentList: Comment[] }) {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
import Image from 'next/image';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
|
export default function JournalItem({ id, title, pic, artist, haveCollect }: SongInfo) {
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
href={`/single/${id}`}
|
||||||
|
className="flex flex-row items-center justify-between w-full h-[72px] py-[12px] px-[18px] rounded-[3px] hover:bg-[#f2f3f7] group"
|
||||||
|
>
|
||||||
|
{/* left */}
|
||||||
|
<div className="flex flex-row items-center">
|
||||||
|
<Image width={48} height={48} src={pic} alt={title} className="w-[48px] h-[48px] overflow-hidden" unoptimized />
|
||||||
|
<div className="flex flex-col justify-between ml-[15px]">
|
||||||
|
<div className="text-[15px] leading-[21px] text-base group-hover:text-theme">{title}</div>
|
||||||
|
<div className="text-[13px] leading-[18.2px] text-[rgba(0,0,0,0.7)] group-hover:text-theme">{artist}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* right */}
|
||||||
|
<div className="flex flex-row items-center">
|
||||||
|
<Image
|
||||||
|
width={24}
|
||||||
|
height={24}
|
||||||
|
src={'/img/icon/audio-playing.svg'}
|
||||||
|
alt={title}
|
||||||
|
className="w-[24px] h-[24px] overflow-hidden"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<p className="ml-[30px] mr-[13px] text-[12px] leading-[16.8px] text-[rgba(0,0,0,0.4)]">05:09</p>
|
||||||
|
|
||||||
|
<Image
|
||||||
|
width={24}
|
||||||
|
height={24}
|
||||||
|
src={haveCollect ? '/img/icon/love-active.svg' : '/img/icon/love.svg'}
|
||||||
|
alt={title}
|
||||||
|
className="w-[24px] h-[24px] overflow-hidden"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* 歌曲卡片
|
||||||
|
*/
|
||||||
|
import { SongCard } from '@/components';
|
||||||
|
|
||||||
|
export default function JournalItem({ songList, className }: { songList: SongInfo[]; className?: string }) {
|
||||||
|
return (
|
||||||
|
<div className={`${className}`}>
|
||||||
|
{songList.map((song: SongInfo) => (
|
||||||
|
<SongCard key={song.id} {...song} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
export function InputArea() {
|
||||||
|
return <div></div>;
|
||||||
|
}
|
@ -1,14 +1,31 @@
|
|||||||
import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss';
|
import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
presets: [
|
presets: [
|
||||||
presetUno(),
|
presetUno(),
|
||||||
presetAttributify(),
|
presetAttributify(),
|
||||||
presetIcons({
|
presetIcons({
|
||||||
extraProperties: {
|
extraProperties: {
|
||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
'vertical-align': 'middle',
|
'vertical-align': 'middle',
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
});
|
|
||||||
|
rules: [
|
||||||
|
['color-theme', { color: '#B44343' }],
|
||||||
|
['bg-theme', { 'background-color': '#B44343' }],
|
||||||
|
['text-flow', { 'text-overflow': 'ellipsis', 'white-space': 'nowrap', overflow: 'hidden' }],
|
||||||
|
],
|
||||||
|
|
||||||
|
shortcuts: {
|
||||||
|
'switch-animation': 'transition duration-300',
|
||||||
|
'bg-base': 'bg-[#fff] dark:bg-[#20202a] switch-animation',
|
||||||
|
'card-base': 'bg-[#ffffff] dark:bg-[#10101a] switch-animation',
|
||||||
|
'text-base': 'text-[rgba(0,0,0,0.95)] dark:text-[#f0f0f0] switch-animation',
|
||||||
|
'switch-label-base': 'bg-gray-200 dark:bg-gray-800 switch-animation',
|
||||||
|
'switch-span-base': 'bg-white dark:bg-gray-300 switch-animation',
|
||||||
|
'text-theme': 'text-[#B44343]',
|
||||||
|
'text-overflow': 'overflow-hidden whitespace-nowrap overflow-ellipsis truncate',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
Loading…
Reference in new issue