├── src ├── lib │ ├── views │ │ └── index.ts │ ├── platforms │ │ ├── index.ts │ │ ├── types.d.ts │ │ ├── YouTube.ts │ │ ├── bilibili.ts │ │ └── Niconico.ts │ ├── sourceType.ts │ ├── vocadb │ │ └── types.d.ts │ ├── material │ │ └── material.ts │ ├── api │ │ └── types.d.ts │ ├── utils.ts │ └── auth │ │ └── index.ts ├── app │ ├── icon.ico │ ├── api │ │ ├── v1 │ │ │ ├── types.d.ts │ │ │ └── route.ts │ │ ├── layout.tsx │ │ └── page.tsx │ ├── manifest.ts │ ├── [lang] │ │ ├── auth │ │ │ └── login │ │ │ │ ├── page.tsx │ │ │ │ └── login-form.tsx │ │ ├── about │ │ │ └── page.tsx │ │ ├── song │ │ │ ├── [id] │ │ │ │ ├── delete-song-button copy.tsx │ │ │ │ ├── refresh-song-button.tsx │ │ │ │ └── views-chart.tsx │ │ │ └── add │ │ │ │ ├── page.tsx │ │ │ │ └── add-song-form.tsx │ │ ├── settings │ │ │ ├── page.tsx │ │ │ ├── types.ts │ │ │ └── index.ts │ │ ├── layout.tsx │ │ ├── rankings │ │ │ ├── utils.ts │ │ │ ├── rankings-action-bar.tsx │ │ │ └── trending │ │ │ │ └── page.tsx │ │ ├── artist │ │ │ └── [id] │ │ │ │ ├── artist-songs.tsx │ │ │ │ ├── related-artists.tsx │ │ │ │ └── co-artists.tsx │ │ └── page.tsx │ └── actions │ │ ├── insertVocaDBSong.ts │ │ └── login.ts ├── components │ ├── filter │ │ ├── types.ts │ │ ├── minimal-filter.tsx │ │ ├── full-filter.tsx │ │ ├── filter.tsx │ │ ├── switch-filter.tsx │ │ ├── binary-toggle-filter.tsx │ │ ├── active-filter.tsx │ │ ├── date-filter.tsx │ │ ├── number-input-filter.tsx │ │ ├── input-filter.tsx │ │ ├── number-select-filter.tsx │ │ ├── toggle-group-filter.tsx │ │ └── select-filter.tsx │ ├── rankings │ │ ├── rankings-list.tsx │ │ ├── rankings-grid.tsx │ │ ├── rankings-list-skeleton-item.tsx │ │ ├── rankings-grid-skeleton-item.tsx │ │ ├── rankings-api-error.tsx │ │ ├── rankings-container.tsx │ │ ├── rankings-skeleton.tsx │ │ ├── rankings-item-trailing.tsx │ │ ├── rankings-grid-item.tsx │ │ ├── transitioning-rankings-grid-item.tsx │ │ ├── rankings-page-selector.tsx │ │ └── rankings-list-item.tsx │ ├── material │ │ ├── divider.tsx │ │ ├── vertical-divider.tsx │ │ ├── icon.tsx │ │ ├── minimal-icon-button.tsx │ │ ├── icon-button.tsx │ │ ├── filled-icon-button.tsx │ │ ├── floating-action-button.tsx │ │ ├── base-icon-button.tsx │ │ ├── filter-chip.tsx │ │ ├── filled-button.tsx │ │ └── switch.tsx │ ├── entity │ │ ├── artists-grid.tsx │ │ ├── artist-card-skeleton-item.tsx │ │ ├── artists-skeleton.tsx │ │ ├── entity-section.tsx │ │ └── artist-card.tsx │ ├── formatters │ │ ├── number-formatter.tsx │ │ ├── years-since-formatter.tsx │ │ ├── date-formatter.tsx │ │ ├── entity-name.tsx │ │ └── song-artists-label.tsx │ ├── providers │ │ ├── language-dictionary-provider.tsx │ │ ├── providers.tsx │ │ └── settings-provider.tsx │ ├── image.tsx │ ├── scripts │ │ └── gtag.tsx │ ├── index.ts │ ├── footer.tsx │ ├── entity-thumbnail.tsx │ ├── transitions │ │ ├── scrim.tsx │ │ ├── expander.tsx │ │ ├── fade-in-out.tsx │ │ ├── modal.tsx │ │ └── modal-drawer.tsx │ ├── search-bar.tsx │ ├── logo.tsx │ └── navbar.tsx ├── data │ ├── extensions │ │ ├── spellfix.so │ │ └── spellfix.dll │ ├── initializers │ │ ├── auth.ts │ │ └── songsData.ts │ └── index.ts ├── localization │ ├── docs │ │ ├── ja │ │ │ └── about.md │ │ ├── en │ │ │ └── about.md │ │ ├── es │ │ │ └── about.md │ │ └── fr │ │ │ └── about.md │ ├── index.ts │ └── DictionaryTokenMaps.ts └── middleware.ts ├── .eslintrc.json ├── public ├── yt_icon.png ├── bili_icon.png ├── nico_icon.png └── voca-db-icon.png ├── postcss.config.js ├── .env.local.template ├── .github └── workflows │ └── main.yml ├── .gitignore ├── tsconfig.json ├── next.config.js ├── README.md ├── package.json ├── tailwind.config.js └── CODE_OF_CONDUCT.md /src/lib/views/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /src/app/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/src/app/icon.ico -------------------------------------------------------------------------------- /public/yt_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/public/yt_icon.png -------------------------------------------------------------------------------- /src/components/filter/types.ts: -------------------------------------------------------------------------------- 1 | export enum ToggleStatus { 2 | INCLUDED, 3 | EXCLUDED 4 | } -------------------------------------------------------------------------------- /public/bili_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/public/bili_icon.png -------------------------------------------------------------------------------- /public/nico_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/public/nico_icon.png -------------------------------------------------------------------------------- /public/voca-db-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/public/voca-db-icon.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src/data/extensions/spellfix.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/src/data/extensions/spellfix.so -------------------------------------------------------------------------------- /src/data/extensions/spellfix.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duosii/vocaloid-rankings/HEAD/src/data/extensions/spellfix.dll -------------------------------------------------------------------------------- /src/app/api/v1/types.d.ts: -------------------------------------------------------------------------------- 1 | import { User } from "@/data/types" 2 | 3 | export interface GraphQLContext { 4 | user: User | null 5 | } -------------------------------------------------------------------------------- /src/lib/platforms/index.ts: -------------------------------------------------------------------------------- 1 | export const defaultFetchHeaders: {[key: string]: string} = { 2 | 'User-Agent': process.env?.USER_AGENT || '' 3 | } -------------------------------------------------------------------------------- /src/components/rankings/rankings-list.tsx: -------------------------------------------------------------------------------- 1 | export function RankingsList( 2 | { 3 | children 4 | }: { 5 | children: React.ReactNode 6 | } 7 | ) { 8 | return