Implement album page
|
|
@ -39,11 +39,31 @@
|
|||
"randomPull": "Random Pull",
|
||||
"highlightAlbum": "Highlight Soundtrack",
|
||||
"ostCount": "Soundtrack Count",
|
||||
"animOsts": "Animation Soundtracks",
|
||||
"gameOsts": "Game Soundtracks",
|
||||
"recentReleases": "Recent Releases",
|
||||
"moreGameReleases": "More Game Releases",
|
||||
"moreAnimReleases": "more Animation releases",
|
||||
"moreLastAdded": "more Last Added",
|
||||
"lastAdded": "Last Added"
|
||||
"lastAdded": "Last Added",
|
||||
"releaseDate": "Release Date",
|
||||
"artists": "Artists",
|
||||
"classification": "Classification",
|
||||
"AnimationOsts": "Animation Soundtracks",
|
||||
"GameOsts": "Game Soundtracks",
|
||||
"publishedBy": "Published by",
|
||||
"animations": "Animations",
|
||||
"avgRating": "Average Rating",
|
||||
"tracklist": "Tracklist",
|
||||
"donationCall": "Consider Donating to remove ads",
|
||||
"donationSteps": "After donating, if the donation e-mail is the same as the one used in the notation, it should be\r\n available in a few hours. If not, contact us on",
|
||||
"brokenLinkContact": "Broken Link? Contact us at Join our Discord!",
|
||||
"mediafirePermission": "MediaFire permission denied?",
|
||||
"mediafirePermissionGuide": "Check this guide",
|
||||
"disc": "Disc",
|
||||
"checkVGMDB": "Check album at",
|
||||
"buyOriginal": "Buy The Original Soundtrack to support the artists",
|
||||
"download": "Download",
|
||||
"flyInc": "Fly.inc",
|
||||
"ouoIO": "ouo.io",
|
||||
"direct": "Direct",
|
||||
"relatedAlbums": "Related Albums"
|
||||
}
|
||||
|
|
@ -4,8 +4,8 @@
|
|||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"start": "npm run dev",
|
||||
"dev": "astro dev",
|
||||
"build": "npm run paraglide:compile && prisma generate --sql && astro build",
|
||||
"dev": "prisma generate && astro dev",
|
||||
"build": "npm run paraglide:compile && astro build",
|
||||
"preview": "astro preview",
|
||||
"paraglide:compile": "paraglide-js compile --project ./project.inlang --outdir ./src\\paraglide"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -171,37 +171,37 @@ model albumHistories {
|
|||
}
|
||||
|
||||
model albums {
|
||||
id Int @id @default(autoincrement())
|
||||
title String? @db.VarChar(255)
|
||||
subTitle String? @db.Text
|
||||
releaseDate DateTime? @db.Date
|
||||
label String? @db.VarChar(255)
|
||||
vgmdb String? @db.VarChar(255)
|
||||
createdAt DateTime @db.DateTime(0)
|
||||
updatedAt DateTime @db.DateTime(0)
|
||||
description String? @db.VarChar(255)
|
||||
createdBy String? @db.VarChar(255)
|
||||
status String? @db.VarChar(255)
|
||||
placeholder String? @db.Text
|
||||
headerColor String? @default("#ffffff") @db.VarChar(255)
|
||||
Album_Animation Album_Animation[]
|
||||
artistList Album_Artist[]
|
||||
Album_Category Album_Category[]
|
||||
Album_Classification Album_Classification[]
|
||||
Album_Game Album_Game[]
|
||||
Album_Platform Album_Platform[]
|
||||
Album_Type Album_Type[]
|
||||
albumHistories albumHistories[]
|
||||
availables availables[]
|
||||
comments comments[]
|
||||
discs discs[]
|
||||
downloads downloads[]
|
||||
favorites favorites[]
|
||||
linkCategories linkCategories[]
|
||||
ratings ratings[]
|
||||
related_album_related_album_albumIdToalbums related_album[] @relation("related_album_albumIdToalbums")
|
||||
related_album_related_album_relatedIdToalbums related_album[] @relation("related_album_relatedIdToalbums")
|
||||
stores stores[]
|
||||
id Int @id @default(autoincrement())
|
||||
title String? @db.VarChar(255)
|
||||
subTitle String? @db.Text
|
||||
releaseDate DateTime? @db.Date
|
||||
label String? @db.VarChar(255)
|
||||
vgmdb String? @db.VarChar(255)
|
||||
createdAt DateTime @db.DateTime(0)
|
||||
updatedAt DateTime @db.DateTime(0)
|
||||
description String? @db.VarChar(255)
|
||||
createdBy String? @db.VarChar(255)
|
||||
status String? @db.VarChar(255)
|
||||
placeholder String? @db.Text
|
||||
headerColor String? @default("#ffffff") @db.VarChar(255)
|
||||
animList Album_Animation[]
|
||||
artistList Album_Artist[]
|
||||
categoryList Album_Category[]
|
||||
classificationList Album_Classification[]
|
||||
gameList Album_Game[]
|
||||
platformList Album_Platform[]
|
||||
Album_Type Album_Type[]
|
||||
albumHistories albumHistories[]
|
||||
availables availables[]
|
||||
comments comments[]
|
||||
discs discs[]
|
||||
downloads downloads[]
|
||||
favorites favorites[]
|
||||
linkCategories linkCategories[]
|
||||
ratings ratings[]
|
||||
relatedAlbumList related_album[] @relation("related_album_albumIdToalbums")
|
||||
relatedToAlbumList related_album[] @relation("related_album_relatedIdToalbums")
|
||||
stores stores[]
|
||||
}
|
||||
|
||||
model animation {
|
||||
|
|
@ -419,12 +419,12 @@ model ratings {
|
|||
}
|
||||
|
||||
model related_album {
|
||||
createdAt DateTime @db.DateTime(0)
|
||||
updatedAt DateTime @db.DateTime(0)
|
||||
albumId Int
|
||||
relatedId Int
|
||||
albums_related_album_albumIdToalbums albums @relation("related_album_albumIdToalbums", fields: [albumId], references: [id], onDelete: Cascade, map: "related_album_ibfk_1")
|
||||
albums_related_album_relatedIdToalbums albums @relation("related_album_relatedIdToalbums", fields: [relatedId], references: [id], onDelete: Cascade, map: "related_album_ibfk_2")
|
||||
createdAt DateTime @db.DateTime(0)
|
||||
updatedAt DateTime @db.DateTime(0)
|
||||
albumId Int
|
||||
relatedId Int
|
||||
pageAlbum albums @relation("related_album_albumIdToalbums", fields: [albumId], references: [id], onDelete: Cascade, map: "related_album_ibfk_1")
|
||||
relatedAlbum albums @relation("related_album_relatedIdToalbums", fields: [relatedId], references: [id], onDelete: Cascade, map: "related_album_ibfk_2")
|
||||
|
||||
@@id([albumId, relatedId])
|
||||
@@index([relatedId], map: "relatedId")
|
||||
|
|
|
|||
BIN
public/img/provider/ICEDRIVE.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/img/provider/MEDIAFIRE.png
Normal file
|
After Width: | Height: | Size: 3 KiB |
BIN
public/img/provider/MEGA.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/img/provider/MIRROR.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/img/provider/RANOZ.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
public/img/provider/SOON.jpg
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
public/img/provider/TERABOX.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/img/provider/amazon.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/img/provider/amazon_jp.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/img/provider/apple_music.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/provider/bandcamp.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
public/img/provider/cd_japan.jpg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/img/provider/deezer.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/provider/google_play.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
public/img/provider/itunes.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/img/provider/mora.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
public/img/provider/ototoy.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/img/provider/play_asia.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
public/img/provider/spotify.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/img/provider/stars.jpg
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
public/img/provider/steam.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
|
|
@ -42,7 +42,7 @@ const { session } = Astro.locals
|
|||
<LoginNav />
|
||||
</div>
|
||||
</div>
|
||||
<nav class='w-full md:h-[55px] bg-dark'>
|
||||
<nav class='relative w-full md:h-[55px] bg-dark z-50'>
|
||||
<Toggler>
|
||||
<a href='/'><NavButton>{m.home()}</NavButton></a>
|
||||
<a href='/last-added'><NavButton>{m.lastaddednav()}</NavButton></a>
|
||||
|
|
|
|||
25
src/components/albumPage/DownloadBtn.astro
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
import Image from 'astro/components/Image.astro'
|
||||
|
||||
interface Props {
|
||||
href: string | null
|
||||
alt?: string
|
||||
icon?: ImageMetadata
|
||||
direct?: boolean
|
||||
}
|
||||
const { href, alt, icon, direct = false } = Astro.props
|
||||
const { permissions } = Astro.locals
|
||||
const disabled = direct && !permissions.includes('SKIP_ADS')
|
||||
---
|
||||
|
||||
<a
|
||||
class:list={[
|
||||
'flex-1 rounded-md bg-btn-gray hover:bg-dark border-none border-2 border-link hover:border-solid flex justify-center items-center uppercase',
|
||||
{ 'border-gold hover:text-gold ': direct, 'bg-btn-disabled text-btn-gray': disabled }
|
||||
]}
|
||||
target='_blank'
|
||||
href={href}
|
||||
>
|
||||
{icon ? <Image class='rounded' width={20} height={20} alt={alt ?? ''} src={icon} /> : null}
|
||||
<slot />
|
||||
</a>
|
||||
53
src/components/albumPage/TrackList.tsx
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import { useState } from 'react'
|
||||
import * as m from 'paraglide/messages'
|
||||
import clsx from 'clsx'
|
||||
|
||||
interface Props {
|
||||
discs: {
|
||||
number: number | null
|
||||
body: string | null
|
||||
}[]
|
||||
}
|
||||
|
||||
export default function TrackList(props: Props) {
|
||||
const { discs = [] } = props
|
||||
const [current, setCurrent] = useState(0)
|
||||
|
||||
return (
|
||||
<div className='mt-2'>
|
||||
<div className='flex'>
|
||||
{discs.length > 1
|
||||
? discs.map(({ number }, i) => (
|
||||
<div key={number} className='flex-1 text-center'>
|
||||
<button
|
||||
type='button'
|
||||
className='w-full py-1 border border-white disabled:text-black disabled:bg-white hover:text-black hover:bg-white'
|
||||
disabled={current === number}
|
||||
onClick={() => setCurrent(number ?? 0)}
|
||||
>
|
||||
{m.disc()} {(number ?? 0) + 1}
|
||||
</button>
|
||||
</div>
|
||||
))
|
||||
: null}
|
||||
</div>
|
||||
<div className=''>
|
||||
<div className='col'>
|
||||
<div className={clsx('border p-3 border-t-0', { 'border-t-2': discs.length === 1 })}>
|
||||
<table className='gap-y-4' cellPadding='6'>
|
||||
<tbody>
|
||||
{discs.length > 0 &&
|
||||
discs[current].body?.split('\n').map((track, i) => (
|
||||
<tr key={i}>
|
||||
<td>{i + 1} </td>
|
||||
<td>{track}</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
BIN
src/img/assets/fly-icon.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
src/img/assets/ouo-icon.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
src/img/assets/vgmdb-logo.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
338
src/pages/album/[id].astro
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
---
|
||||
import prismaClient from 'utils/prisma-client'
|
||||
import * as m from 'paraglide/messages'
|
||||
import { Image } from 'astro:assets'
|
||||
|
||||
import BaseLayout from 'layouts/base.astro'
|
||||
import TrackList from 'components/albumPage/TrackList'
|
||||
import DownloadBtn from 'components/albumPage/DownloadBtn.astro'
|
||||
import AlbumBox from 'components/AlbumBox.astro'
|
||||
|
||||
import kofi from 'img/socials/ko-fi-donate-button.png'
|
||||
import discord from 'img/socials/discord.png'
|
||||
import vgmdbLogo from 'img/assets/vgmdb-logo.png'
|
||||
import flyIcon from 'img/assets/fly-icon.png'
|
||||
import ouoIcon from 'img/assets/ouo-icon.png'
|
||||
|
||||
const { id } = Astro.params
|
||||
const album = await prismaClient.albums.findUnique({
|
||||
where: { id: Number(id) },
|
||||
include: {
|
||||
artistList: { select: { artist: true } },
|
||||
categoryList: { select: { categoryName: true } },
|
||||
classificationList: { select: { classificationName: true } },
|
||||
platformList: { select: { platform: { select: { id: true, name: true } } } },
|
||||
gameList: { select: { game: { select: { slug: true, name: true } } } },
|
||||
animList: { select: { animation: { select: { id: true, title: true } } } },
|
||||
stores: { select: { url: true, provider: true }, where: { NOT: { provider: 'SOON' } } },
|
||||
discs: { select: { number: true, body: true } },
|
||||
downloads: { select: { title: true, links: true } },
|
||||
relatedAlbumList: { select: { relatedAlbum: { select: { id: true, title: true } } } }
|
||||
}
|
||||
})
|
||||
|
||||
if (!album) {
|
||||
Astro.response.status = 404
|
||||
Astro.response.statusText = 'Not found'
|
||||
return
|
||||
}
|
||||
|
||||
const locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language
|
||||
---
|
||||
|
||||
<style>
|
||||
tr {
|
||||
th {
|
||||
display: ruby;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<BaseLayout>
|
||||
<div class='flex flex-col flex-1 max-w-[2000px] px-6 py-3'>
|
||||
<div class='flex gap-x-3'>
|
||||
<div class='flex-1'>
|
||||
<div class='size-full relative cursor-pointer'>
|
||||
<Image
|
||||
src={`https://cdn.sittingonclouds.net/album/${album.id}.png`}
|
||||
alt={`${album.title} cover`}
|
||||
class='rounded-md size-full object-contain absolute'
|
||||
quality='mid'
|
||||
inferSize
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class='flex-1'>
|
||||
<div class='bg-dark rounded-md py-4 px-6'>
|
||||
<div class='font-medium text-4xl text-center'>{album.title}</div>
|
||||
{album.subTitle ? <h6 style={{ whiteSpace: 'pre-wrap' }}>{album.subTitle}</h6> : null}
|
||||
<table class='mt-4'>
|
||||
<tbody>
|
||||
{
|
||||
album.releaseDate ? (
|
||||
<tr>
|
||||
<th class='width-row'>{m.releaseDate()}</th>
|
||||
<td>{new Intl.DateTimeFormat(locale, { dateStyle: 'medium' }).format(album.releaseDate)}</td>
|
||||
</tr>
|
||||
) : null
|
||||
}
|
||||
|
||||
{
|
||||
album.artistList.length > 0 && (
|
||||
<tr>
|
||||
<th>{m.artists()}</th>
|
||||
<td>{album.artistList.map(({ artist }) => artist.name).join(', ')}</td>
|
||||
</tr>
|
||||
)
|
||||
}
|
||||
|
||||
<tr>
|
||||
<th>{m.classification()}</th>
|
||||
<td>
|
||||
{
|
||||
[
|
||||
album.categoryList.map(({ categoryName }) => (m as any)[`${categoryName}Osts`]()).join(' & '),
|
||||
album.classificationList.map(({ classificationName }) => classificationName).join(', ')
|
||||
]
|
||||
.filter((f) => f !== '')
|
||||
.join(' - ')
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
{
|
||||
album.label && (
|
||||
<tr>
|
||||
<th>{m.publishedBy()}</th>
|
||||
<td>
|
||||
<a class='btn btn-link p-0' href={`/publisher/${album.label}`}>
|
||||
{album.label}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
)
|
||||
}
|
||||
{
|
||||
album.platformList.length > 0 && (
|
||||
<tr>
|
||||
<th>{m.platforms()}</th>
|
||||
<td>
|
||||
{album.platformList.map(({ platform }, i) => (
|
||||
<Fragment key={platform.id}>
|
||||
{id === '29' ? (
|
||||
<span class='btn p-0' style={{ color: 'white' }}>
|
||||
{platform.name}
|
||||
</span>
|
||||
) : (
|
||||
<a class='btn btn-link p-0' href={`/platform/${id}`}>
|
||||
{platform.name}
|
||||
</a>
|
||||
)}
|
||||
{i !== album.platformList.length - 1 && ', '}
|
||||
</Fragment>
|
||||
))}
|
||||
</td>
|
||||
</tr>
|
||||
)
|
||||
}
|
||||
{
|
||||
album.gameList.length > 0 && (
|
||||
<tr>
|
||||
<th>{m.games()}</th>
|
||||
<td>
|
||||
{album.gameList.map(({ game }, i) => (
|
||||
<Fragment key={game.slug}>
|
||||
<a class='btn btn-link p-0' href={`/game/${game.slug}`}>
|
||||
{game.name}
|
||||
</a>
|
||||
{i !== album.gameList.length - 1 && ', '}
|
||||
</Fragment>
|
||||
))}
|
||||
</td>
|
||||
</tr>
|
||||
)
|
||||
}
|
||||
{
|
||||
album.animList.length > 0 && (
|
||||
<tr>
|
||||
<th>{m.animations()}</th>
|
||||
<td>
|
||||
{album.animList.map(({ animation }, i) => (
|
||||
<Fragment key={id}>
|
||||
<a class='btn btn-link p-0' href={`/anim/${id}`}>
|
||||
{animation.title}
|
||||
</a>
|
||||
{i !== album.animList.length - 1 && ', '}
|
||||
</Fragment>
|
||||
))}
|
||||
</td>
|
||||
</tr>
|
||||
)
|
||||
}
|
||||
|
||||
<tr>
|
||||
<th>{m.avgRating()}</th>
|
||||
<td>
|
||||
<!-- <StarCounter albumId={album.id} /> -->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- <UserButtons id={album.id} /> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class='flex gap-x-3'>
|
||||
<div class='flex-1 bg-dark rounded-md p-4'>
|
||||
<h1 class='text-center uppercase text-4xl font-semibold'>
|
||||
{m.tracklist()}
|
||||
</h1>
|
||||
|
||||
<div class='px-3'>
|
||||
<TrackList discs={album.discs} client:only='react' />
|
||||
</div>
|
||||
</div>
|
||||
<div class='flex-1 bg-dark rounded-md p-3'>
|
||||
{
|
||||
album.vgmdb && (
|
||||
<div class='mt-2 mb-3 ml-2 flex'>
|
||||
<span class='text-xl'>{m.checkVGMDB()}:</span>
|
||||
<a href={album.vgmdb} class='ml-2' target='_blank' rel='noopener noreferrer'>
|
||||
<Image width={100} height={30} alt={'VGMdb'} src={vgmdbLogo} />
|
||||
</a>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
{
|
||||
album.stores.length > 0 && (
|
||||
<div class='row mt-2 px-3'>
|
||||
<div class='bg-red-500 text-white text-4xl rounded-md px-3 py-4'>
|
||||
<h1 class='text-center text-3xl uppercase font-semibold drop-shadow-lg'>{m.buyOriginal()}</h1>
|
||||
<hr class='my-2.5' />
|
||||
<div class='flex justify-center flex-wrap gap-4'>
|
||||
{album.stores.map(({ url, provider }, i) => (
|
||||
<a target='_blank' rel='noopener noreferrer' href={url}>
|
||||
<Image
|
||||
class='rounded-md'
|
||||
width={130}
|
||||
height={50}
|
||||
style={{ height: 'auto', width: '130px' }}
|
||||
alt={provider}
|
||||
src={`/img/provider/${provider}.jpg`}
|
||||
/>
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
<hr />
|
||||
<div>
|
||||
{
|
||||
album.downloads?.map((download) => {
|
||||
const { links, title } = download
|
||||
|
||||
return (
|
||||
<div class=''>
|
||||
<h2 class='text-center text-3xl'>{title}</h2>
|
||||
{links.map((link) => {
|
||||
const { id: linkId, url, url2, provider, directUrl } = link
|
||||
|
||||
return (
|
||||
<Fragment key={linkId}>
|
||||
<div class='flex gap-2 my-2'>
|
||||
<div>
|
||||
<Image
|
||||
class='rounded'
|
||||
width={30}
|
||||
height={30}
|
||||
alt={provider}
|
||||
src={`/img/provider/${provider}.png`}
|
||||
/>
|
||||
</div>
|
||||
{url2 && (
|
||||
<DownloadBtn href={url2} alt='fly' icon={flyIcon}>
|
||||
{m.flyInc()}
|
||||
</DownloadBtn>
|
||||
)}
|
||||
{url ? (
|
||||
<DownloadBtn href={url} alt='ouo' icon={ouoIcon}>
|
||||
{m.ouoIO()}
|
||||
</DownloadBtn>
|
||||
) : null}
|
||||
{directUrl ? (
|
||||
<DownloadBtn href={directUrl} direct>
|
||||
{m.direct()}
|
||||
</DownloadBtn>
|
||||
) : null}
|
||||
</div>
|
||||
</Fragment>
|
||||
)
|
||||
})}
|
||||
<hr />
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<h4 class='text-2xl'>{m.donationCall()}</h4>
|
||||
<div>
|
||||
<span> {m.donationSteps()} </span>
|
||||
<a href='https://discord.gg/AQc9vwGM' target='_blank' rel='noopener noreferrer'>Discord</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class='mt-1'>
|
||||
<a target='_blank' rel='noopener noreferrer' href='https://ko-fi.com/sittingonclouds'>
|
||||
<Image style={{ height: 'auto', width: '200px' }} alt='Support me on Ko-fi' src={kofi} />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class='text-xl'>
|
||||
<div class='flex items-center'>
|
||||
<span>{m.brokenLinkContact()}</span>
|
||||
<a class='' href='https://discord.gg/x23SFbE' target='_blank' rel='noopener noreferrer'>
|
||||
<Image
|
||||
alt='Join our Discord!'
|
||||
class='rounded-md ml-2'
|
||||
style={{
|
||||
height: 'auto',
|
||||
width: '130px'
|
||||
}}
|
||||
src={discord}
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<div class='mt-2'>
|
||||
<span>{m.mediafirePermission()}</span>
|
||||
<a class='ml-1 text-link hover:underline' href='https://www.youtube.com/watch?v=d6-hcbEozAQ'>
|
||||
{m.mediafirePermissionGuide()}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
<!-- Comment List here -->
|
||||
<div class='mt-2 bg-dark uppercase text-4xl font-semibold rounded-md text-center py-4 px-1.5'>
|
||||
{m.relatedAlbums()}
|
||||
</div>
|
||||
<div class='mt-2'>
|
||||
<div class='grid grid-cols-4 gap-x-1.5'>
|
||||
{
|
||||
album.relatedAlbumList.map(({ relatedAlbum }) => (
|
||||
<AlbumBox
|
||||
title={relatedAlbum.title}
|
||||
href={`/album/${relatedAlbum.id}`}
|
||||
image={`/album/${relatedAlbum.id}.png`}
|
||||
/>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
|
|
@ -4,3 +4,8 @@
|
|||
color: white;
|
||||
font-family: 'Rubik', Sans-serif;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,10 +9,14 @@ export default {
|
|||
colors: {
|
||||
dark: '#212529',
|
||||
'dark-hover': '#2b3035',
|
||||
gold: '#ffdb37',
|
||||
'btn-gray': 'rgb(108, 117, 125)',
|
||||
'btn-disabled': 'rgba(108, 117, 125, .65)',
|
||||
gray: '#3f3f3f',
|
||||
'gray-hover': '#4f4f4f',
|
||||
'soc-green': '#4b7667',
|
||||
'soc-green-dark': 'rgba(17, 17, 17, 0.7)',
|
||||
link: 'rgb(110, 168, 254)',
|
||||
'hover-link': '#00d4ff'
|
||||
}
|
||||
}
|
||||
|
|
|
|||
174
yarn.lock
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
"@alloc/quick-lru@^5.2.0":
|
||||
version "5.2.0"
|
||||
resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
|
||||
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
|
||||
|
||||
"@ampproject/remapping@^2.2.0":
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
|
||||
"@isaacs/cliui@^8.0.2":
|
||||
version "8.0.2"
|
||||
resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
|
||||
integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
|
||||
dependencies:
|
||||
string-width "^5.1.2"
|
||||
|
|
@ -937,7 +937,16 @@
|
|||
wrap-ansi "^8.1.0"
|
||||
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5":
|
||||
"@jridgewell/gen-mapping@^0.3.2":
|
||||
version "0.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
|
||||
integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
|
||||
dependencies:
|
||||
"@jridgewell/set-array" "^1.2.1"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.5":
|
||||
version "0.3.5"
|
||||
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
|
||||
integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
|
||||
|
|
@ -1400,7 +1409,7 @@
|
|||
|
||||
"@pkgjs/parseargs@^0.11.0":
|
||||
version "0.11.0"
|
||||
resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
||||
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
||||
|
||||
"@pkgr/core@^0.1.0":
|
||||
|
|
@ -1962,7 +1971,7 @@ ansi-styles@^6.1.0, ansi-styles@^6.2.1:
|
|||
|
||||
any-promise@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
|
||||
|
||||
anymatch@^3.1.3, anymatch@~3.1.2:
|
||||
|
|
@ -1975,7 +1984,7 @@ anymatch@^3.1.3, anymatch@~3.1.2:
|
|||
|
||||
arg@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
|
||||
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
|
||||
|
||||
argparse@^1.0.7:
|
||||
|
|
@ -2217,7 +2226,7 @@ asynckit@^0.4.0:
|
|||
|
||||
autoprefixer@^10.4.20:
|
||||
version "10.4.20"
|
||||
resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
|
||||
integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
|
||||
dependencies:
|
||||
browserslist "^4.23.3"
|
||||
|
|
@ -2352,17 +2361,7 @@ braces@^3.0.3, braces@~3.0.2:
|
|||
dependencies:
|
||||
fill-range "^7.1.1"
|
||||
|
||||
browserslist@^4.23.3:
|
||||
version "4.24.0"
|
||||
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz"
|
||||
integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001663"
|
||||
electron-to-chromium "^1.5.28"
|
||||
node-releases "^2.0.18"
|
||||
update-browserslist-db "^1.1.0"
|
||||
|
||||
browserslist@^4.24.0:
|
||||
browserslist@^4.23.3, browserslist@^4.24.0:
|
||||
version "4.24.4"
|
||||
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
|
||||
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
|
||||
|
|
@ -2405,7 +2404,7 @@ callsites@^3.0.0:
|
|||
|
||||
camelcase-css@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
|
||||
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
|
||||
|
||||
camelcase@^8.0.0:
|
||||
|
|
@ -2413,10 +2412,10 @@ camelcase@^8.0.0:
|
|||
resolved "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz"
|
||||
integrity sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==
|
||||
|
||||
caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663:
|
||||
version "1.0.30001663"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz"
|
||||
integrity sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==
|
||||
caniuse-lite@^1.0.30001646:
|
||||
version "1.0.30001700"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz#26cd429cf09b4fd4e745daf4916039c794d720f6"
|
||||
integrity sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==
|
||||
|
||||
caniuse-lite@^1.0.30001688:
|
||||
version "1.0.30001692"
|
||||
|
|
@ -2586,7 +2585,7 @@ commander@11.1.0:
|
|||
|
||||
commander@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
||||
|
||||
commander@^7.2.0:
|
||||
|
|
@ -2661,7 +2660,16 @@ cross-fetch@^4.0.0:
|
|||
dependencies:
|
||||
node-fetch "^2.7.0"
|
||||
|
||||
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
|
||||
cross-spawn@^7.0.0:
|
||||
version "7.0.6"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
|
||||
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
|
||||
dependencies:
|
||||
path-key "^3.1.0"
|
||||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
cross-spawn@^7.0.2:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
|
||||
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
|
||||
|
|
@ -2909,7 +2917,7 @@ devlop@^1.0.0, devlop@^1.1.0:
|
|||
|
||||
didyoumean@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
|
||||
integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
|
||||
|
||||
diff@^5.2.0:
|
||||
|
|
@ -2973,7 +2981,7 @@ dset@^3.1.4:
|
|||
|
||||
eastasianwidth@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
|
||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
ecdsa-sig-formatter@1.0.11:
|
||||
|
|
@ -2988,11 +2996,6 @@ ee-first@1.1.1:
|
|||
resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
|
||||
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
||||
|
||||
electron-to-chromium@^1.5.28:
|
||||
version "1.5.28"
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz"
|
||||
integrity sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==
|
||||
|
||||
electron-to-chromium@^1.5.73:
|
||||
version "1.5.80"
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz"
|
||||
|
|
@ -3247,7 +3250,7 @@ esbuild@^0.24.2:
|
|||
"@esbuild/win32-ia32" "0.24.2"
|
||||
"@esbuild/win32-x64" "0.24.2"
|
||||
|
||||
escalade@^3.1.1, escalade@^3.1.2, escalade@^3.2.0:
|
||||
escalade@^3.1.1, escalade@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
|
||||
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
|
||||
|
|
@ -3626,7 +3629,7 @@ for-each@^0.3.3:
|
|||
|
||||
foreground-child@^3.1.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
|
||||
integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
|
||||
dependencies:
|
||||
cross-spawn "^7.0.0"
|
||||
|
|
@ -3643,7 +3646,7 @@ form-data@^4.0.0:
|
|||
|
||||
fraction.js@^4.3.7:
|
||||
version "4.3.7"
|
||||
resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
|
||||
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
|
||||
|
||||
fresh@^0.5.2:
|
||||
|
|
@ -3769,7 +3772,7 @@ glob-parent@^6.0.2:
|
|||
|
||||
glob@^10.3.10:
|
||||
version "10.4.5"
|
||||
resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
|
||||
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
|
||||
dependencies:
|
||||
foreground-child "^3.1.0"
|
||||
|
|
@ -4376,7 +4379,7 @@ iterator.prototype@^1.1.2:
|
|||
|
||||
jackspeak@^3.1.2:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
|
||||
integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
|
||||
dependencies:
|
||||
"@isaacs/cliui" "^8.0.2"
|
||||
|
|
@ -4549,19 +4552,14 @@ levn@^0.4.1:
|
|||
prelude-ls "^1.2.1"
|
||||
type-check "~0.4.0"
|
||||
|
||||
lilconfig@^3.0.0:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz"
|
||||
integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==
|
||||
|
||||
lilconfig@^3.1.3:
|
||||
lilconfig@^3.0.0, lilconfig@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
|
||||
integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
|
||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||
|
||||
load-yaml-file@^0.2.0:
|
||||
|
|
@ -5178,7 +5176,7 @@ minipass@^5.0.0:
|
|||
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
|
||||
minizlib@^2.1.1:
|
||||
|
|
@ -5221,7 +5219,7 @@ murmurhash3js@^3.0.1:
|
|||
|
||||
mz@^2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
|
@ -5287,11 +5285,6 @@ node-fetch@^2.7.0:
|
|||
dependencies:
|
||||
whatwg-url "^5.0.0"
|
||||
|
||||
node-releases@^2.0.18:
|
||||
version "2.0.18"
|
||||
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz"
|
||||
integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
|
||||
|
||||
node-releases@^2.0.19:
|
||||
version "2.0.19"
|
||||
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz"
|
||||
|
|
@ -5309,7 +5302,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
|
|||
|
||||
normalize-range@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
|
||||
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
|
||||
|
||||
nth-check@^2.0.1:
|
||||
|
|
@ -5321,12 +5314,12 @@ nth-check@^2.0.1:
|
|||
|
||||
object-assign@^4.0.1, object-assign@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
||||
|
||||
object-hash@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
|
||||
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
|
||||
|
||||
object-inspect@^1.13.1:
|
||||
|
|
@ -5504,9 +5497,9 @@ p-try@^2.0.0:
|
|||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||
|
||||
package-json-from-dist@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz"
|
||||
integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
|
||||
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
|
||||
|
||||
package-manager-detector@^0.2.0:
|
||||
version "0.2.0"
|
||||
|
|
@ -5576,7 +5569,7 @@ path-parse@^1.0.7:
|
|||
|
||||
path-scurry@^1.11.1:
|
||||
version "1.11.1"
|
||||
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
|
||||
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
|
||||
dependencies:
|
||||
lru-cache "^10.2.0"
|
||||
|
|
@ -5624,7 +5617,7 @@ pify@5.0.0:
|
|||
|
||||
pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
|
||||
|
||||
pify@^4.0.1:
|
||||
|
|
@ -5634,7 +5627,7 @@ pify@^4.0.1:
|
|||
|
||||
pirates@^4.0.1:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
pkg-dir@^4.2.0:
|
||||
|
|
@ -5660,7 +5653,7 @@ possible-typed-array-names@^1.0.0:
|
|||
|
||||
postcss-import@^15.1.0:
|
||||
version "15.1.0"
|
||||
resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
|
||||
integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.0.0"
|
||||
|
|
@ -5669,14 +5662,14 @@ postcss-import@^15.1.0:
|
|||
|
||||
postcss-js@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
|
||||
integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
|
||||
dependencies:
|
||||
camelcase-css "^2.0.1"
|
||||
|
||||
postcss-load-config@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3"
|
||||
integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==
|
||||
dependencies:
|
||||
lilconfig "^3.0.0"
|
||||
|
|
@ -5691,7 +5684,7 @@ postcss-nested@^6.2.0:
|
|||
|
||||
postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2:
|
||||
version "6.1.2"
|
||||
resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
|
||||
integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
|
||||
dependencies:
|
||||
cssesc "^3.0.0"
|
||||
|
|
@ -5699,7 +5692,7 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.1.1, postcss-selecto
|
|||
|
||||
postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||
|
||||
postcss@^8.4.14, postcss@^8.4.49:
|
||||
|
|
@ -5712,9 +5705,9 @@ postcss@^8.4.14, postcss@^8.4.49:
|
|||
source-map-js "^1.2.1"
|
||||
|
||||
postcss@^8.4.47, postcss@^8.5.1:
|
||||
version "8.5.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214"
|
||||
integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==
|
||||
version "8.5.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.2.tgz#e7b99cb9d2ec3e8dd424002e7c16517cb2b846bd"
|
||||
integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==
|
||||
dependencies:
|
||||
nanoid "^3.3.8"
|
||||
picocolors "^1.1.1"
|
||||
|
|
@ -5879,7 +5872,7 @@ react@^18.3.1:
|
|||
|
||||
read-cache@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
|
||||
integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
|
||||
dependencies:
|
||||
pify "^2.3.0"
|
||||
|
|
@ -6052,16 +6045,7 @@ resolve-pkg-maps@^1.0.0:
|
|||
resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz"
|
||||
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
|
||||
|
||||
resolve@^1.1.7:
|
||||
version "1.22.8"
|
||||
resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz"
|
||||
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
|
||||
dependencies:
|
||||
is-core-module "^2.13.0"
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
resolve@^1.22.8:
|
||||
resolve@^1.1.7, resolve@^1.22.8:
|
||||
version "1.22.10"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
|
||||
integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
|
||||
|
|
@ -6349,7 +6333,7 @@ side-channel@^1.0.4, side-channel@^1.0.6:
|
|||
|
||||
signal-exit@^4.0.1:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
||||
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
||||
|
||||
simple-swizzle@^0.2.2:
|
||||
|
|
@ -6410,7 +6394,7 @@ stop-iteration-iterator@^1.0.0:
|
|||
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
|
|
@ -6428,7 +6412,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
|||
|
||||
string-width@^5.0.1, string-width@^5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
|
||||
integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
|
||||
dependencies:
|
||||
eastasianwidth "^0.2.0"
|
||||
|
|
@ -6516,7 +6500,7 @@ stringify-entities@^4.0.0:
|
|||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
|
@ -6655,14 +6639,14 @@ text-table@^0.2.0:
|
|||
|
||||
thenify-all@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
|
||||
integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
|
||||
dependencies:
|
||||
thenify ">= 3.1.0 < 4"
|
||||
|
||||
"thenify@>= 3.1.0 < 4":
|
||||
version "3.3.1"
|
||||
resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
|
||||
integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
|
@ -6726,7 +6710,7 @@ ts-api-utils@^1.3.0:
|
|||
|
||||
ts-interface-checker@^0.1.9:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
|
||||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||
|
||||
tsconfck@^3.1.4:
|
||||
|
|
@ -6989,14 +6973,6 @@ unstorage@^1.14.0:
|
|||
ofetch "^1.4.1"
|
||||
ufo "^1.5.4"
|
||||
|
||||
update-browserslist-db@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz"
|
||||
integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
|
||||
dependencies:
|
||||
escalade "^3.1.2"
|
||||
picocolors "^1.0.1"
|
||||
|
||||
update-browserslist-db@^1.1.1:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz"
|
||||
|
|
@ -7180,7 +7156,7 @@ word-wrap@^1.2.5:
|
|||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
|
|
@ -7198,7 +7174,7 @@ wrap-ansi@^7.0.0:
|
|||
|
||||
wrap-ansi@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
|
||||
integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
|
||||
dependencies:
|
||||
ansi-styles "^6.1.0"
|
||||
|
|
@ -7240,9 +7216,9 @@ yallist@^4.0.0:
|
|||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yaml@^2.3.4:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz"
|
||||
integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
|
||||
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
|
||||
|
||||
yargs-parser@^21.1.1:
|
||||
version "21.1.1"
|
||||
|
|
|
|||