You've already forked AstralRinth
forked from didirus/AstralRinth
Project, Search, User redesign (#1281)
* New project page * fix silly icon tailwind classes * Start new versions page, add new ButtonStyled component * Pagination and finish mocking up versions page functionality * green download button * hover animation * New Modal, Avatar refactor, subpages in NavTabs * lint * Download modal * New user page + fix lint * fix ui lint * Download animation fix * Versions filter + finish project page * Improve consistency of buttons on home page * Fix ButtonStyled breaking * Fix margin on version summary * finish search, new modals, user + project page mobile * fix gallery image pages * New project header * Fix gallery tab showing improperly * Use auto direction + position for all popouts * Preliminary user page * test to see if this fixes login stuff * remove extra slash * Add version actions, move download button on versions page * Listed -> public * Shorten download modal selector height * Fix user menu open direction * Change breakpoint for header collapse * Only underline title * Tighten padding on stats a little * New nav * Make mobile breakpoint more consistent * fix header breakpoint regression * Add sign in button * Fix edit icon color * Fix margin at top of screen * Fix user bios and ad width * Fix user nav showing when there's only one type of project * Fix plural projects on user page & extract i18n * Remove ads on mobile for now * Fix overflow menu showing hidden items * NavTabs on mobile * Fix navbar z index * Search filter overhaul + negative filters * fix no-max-height * port version filters, fix following/collections, lint * hide promos * ui lint * Disable modal background animation to reduce reported motion sickness * Hide install with modrinth app button on mobile --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Prospector <prospectordev@gmail.com>
This commit is contained in:
246
packages/utils/index.d.ts
vendored
Normal file
246
packages/utils/index.d.ts
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
const BASE62_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' as const;
|
||||
type Base62Char = typeof BASE62_CHARS[number];
|
||||
|
||||
declare global {
|
||||
type ModrinthId = `${Base62Char}`[];
|
||||
|
||||
type Environment = 'required' | 'optional' | 'unsupported' | 'unknown';
|
||||
|
||||
type RequestableStatus = 'approved' | 'archived' | 'unlisted' | 'private'
|
||||
type ApprovedStatus = RequestableStatus | 'scheduled'
|
||||
type UnapprovedStatus = 'draft' | 'processing' | 'rejected' | 'withheld'
|
||||
type ProjectStatus = ApprovedStatus | UnapprovedStatus | 'unknown'
|
||||
|
||||
type DonationPlatform =
|
||||
{ short: "patreon", name: "Patreon" }
|
||||
| { short: "bmac", name: "Buy Me A Coffee" }
|
||||
| { short: "paypal", name: "PayPal" }
|
||||
| { short: "github", name: "GitHub Sponsors" }
|
||||
| { short: "ko-fi", name: "Ko-fi" }
|
||||
|
|
||||
| { short: "other", name: "Other" }
|
||||
|
||||
type ProjectType = 'mod' | 'modpack' | 'resourcepack' | 'shader'
|
||||
type MonetizationStatus = 'monetized' | 'demonetized' | 'force-demonetized'
|
||||
|
||||
type GameVersion = string;
|
||||
type Platform = string;
|
||||
type Category = string;
|
||||
type CategoryOrPlatform = Category | Platform
|
||||
|
||||
interface DonationLink<T extends DonationPlatform> {
|
||||
id: T["short"],
|
||||
platform: T["name"],
|
||||
url: string
|
||||
}
|
||||
|
||||
interface GalleryImage {
|
||||
url: string,
|
||||
featured: boolean,
|
||||
created: string,
|
||||
ordering: number,
|
||||
|
||||
title?: string,
|
||||
description?: string,
|
||||
}
|
||||
|
||||
interface Project {
|
||||
id: ModrinthId,
|
||||
project_type: ProjectType,
|
||||
slug: string,
|
||||
title: string,
|
||||
description: string,
|
||||
status: ProjectStatus,
|
||||
requested_status: RequestableStatus,
|
||||
monetization_status: MonetizationStatus,
|
||||
|
||||
body: string,
|
||||
icon_url?: string,
|
||||
color?: number,
|
||||
|
||||
categories: Category[],
|
||||
additional_categories: Category[],
|
||||
|
||||
downloads: number,
|
||||
followers: number,
|
||||
|
||||
client_side: Environment,
|
||||
server_side: Environment,
|
||||
|
||||
team: ModrinthId,
|
||||
thread_id: ModrinthId,
|
||||
|
||||
issues_url?: string,
|
||||
source_url?: string,
|
||||
wiki_url?: string,
|
||||
discord_url?: string,
|
||||
donation_urls: DonationLink[],
|
||||
|
||||
published: string,
|
||||
updated: string,
|
||||
approved: string,
|
||||
queued: string,
|
||||
|
||||
game_versions: GameVersion[],
|
||||
loaders: Platform[],
|
||||
|
||||
versions: ModrinthId[],
|
||||
gallery?: GalleryImage[]
|
||||
|
||||
license: {
|
||||
id: string,
|
||||
name, string,
|
||||
url?: string,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
interface SearchResult {
|
||||
id: ModrinthId,
|
||||
project_type: ProjectType,
|
||||
slug: string,
|
||||
title: string,
|
||||
description: string,
|
||||
monetization_status: MonetizationStatus,
|
||||
|
||||
icon_url?: string,
|
||||
color?: number,
|
||||
|
||||
categories: CategoryOrPlatform[],
|
||||
display_categories: CategoryOrPlatform[],
|
||||
versions: GameVersion[],
|
||||
latest_version: GameVersion,
|
||||
|
||||
downloads: number,
|
||||
follows: number,
|
||||
|
||||
client_side: Environment,
|
||||
server_side: Environment,
|
||||
|
||||
author: string,
|
||||
|
||||
date_created: string,
|
||||
date_modified: string,
|
||||
|
||||
gallery: string[]
|
||||
featured_gallery?: string[]
|
||||
|
||||
license: string,
|
||||
}
|
||||
|
||||
type DependencyType = 'required' | 'optional' | 'incompatible' | 'embedded'
|
||||
|
||||
interface VersionDependency {
|
||||
dependency_type: DependencyType,
|
||||
file_name?: string,
|
||||
}
|
||||
|
||||
interface ProjectDependency {
|
||||
dependency_type: DependencyType,
|
||||
project_id?: string,
|
||||
}
|
||||
|
||||
interface FileDependency {
|
||||
dependency_type: DependencyType,
|
||||
file_name?: string,
|
||||
}
|
||||
|
||||
type Dependency = VersionDependency | ProjectDependency | FileDependency
|
||||
type VersionChannel = 'release' | 'beta' | 'alpha'
|
||||
type VersionStatus = 'listed' | 'archived' | 'draft' | 'unlisted' | 'scheduled' | 'unknown'
|
||||
type FileType = 'required-resource-pack' | 'optional-resource-pack'
|
||||
|
||||
interface VersionFileHash {
|
||||
sha512: string,
|
||||
sha1: string,
|
||||
}
|
||||
|
||||
interface VersionFile {
|
||||
hashes: VersionFileHash[],
|
||||
url: string,
|
||||
filename: string,
|
||||
primary: boolean,
|
||||
size: number,
|
||||
file_type?: FileType
|
||||
}
|
||||
|
||||
interface Version {
|
||||
name: string,
|
||||
version_number: string,
|
||||
changelog?: string,
|
||||
dependencies: Dependency[],
|
||||
game_versions: GameVersion[],
|
||||
version_type: VersionChannel,
|
||||
loaders: Platform[],
|
||||
featured: boolean,
|
||||
status: VersionStatus,
|
||||
id: ModrinthId,
|
||||
project_id: ModrinthId,
|
||||
author_id: ModrinthId,
|
||||
date_published: string,
|
||||
downloads: number,
|
||||
files: VersionFile[],
|
||||
}
|
||||
|
||||
interface PayoutData {
|
||||
balance: number,
|
||||
payout_wallet: 'paypal' | 'venmo',
|
||||
payout_wallet_type: 'email' | 'phone' | 'user_handle',
|
||||
payout_address: string,
|
||||
}
|
||||
|
||||
type UserRole = 'admin' | 'moderator' | 'pyro' | 'developer'
|
||||
|
||||
enum UserBadge {
|
||||
MIDAS = 1 << 0,
|
||||
EARLY_MODPACK_ADOPTER = 1 << 1,
|
||||
EARLY_RESPACK_ADOPTER = 1 << 2,
|
||||
EARLY_PLUGIN_ADOPTER = 1 << 3,
|
||||
ALPHA_TESTER = 1 << 4,
|
||||
CONTRIBUTOR = 1 << 5,
|
||||
TRANSLATOR = 1 << 6,
|
||||
}
|
||||
|
||||
type UserBadges = number;
|
||||
|
||||
interface User {
|
||||
username: string,
|
||||
email?: string,
|
||||
bio?: string,
|
||||
payout_data?: PayoutData,
|
||||
id: ModrinthId,
|
||||
avatar_url: string,
|
||||
created: string,
|
||||
role: UserRole,
|
||||
badges: UserBadges,
|
||||
auth_providers?: string[],
|
||||
email_verified?: boolean,
|
||||
has_password?: boolean,
|
||||
has_totp?: boolean
|
||||
}
|
||||
|
||||
enum TeamMemberPermission {
|
||||
UPLOAD_VERSION = 1 << 0,
|
||||
DELETE_VERSION = 1 << 1,
|
||||
EDIT_DETAILS = 1 << 2,
|
||||
EDIT_BODY = 1 << 3,
|
||||
MANAGE_INVITES = 1 << 4,
|
||||
REMOVE_MEMBER = 1 << 5,
|
||||
EDIT_MEMBER = 1 << 6,
|
||||
DELETE_PROJECT = 1 << 7,
|
||||
VIEW_ANALYTICS = 1 << 8,
|
||||
VIEW_PAYOUTS = 1 << 9,
|
||||
}
|
||||
|
||||
type TeamMemberPermissions = number;
|
||||
|
||||
interface TeamMember {
|
||||
team_id: ModrinthId,
|
||||
user: User,
|
||||
role: string,
|
||||
permissions: TeamMemberPermissions,
|
||||
accepted: boolean,
|
||||
payouts_split: number,
|
||||
ordering: number,
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index.ts",
|
||||
"types": "./index.ts",
|
||||
"types": "./index.d.ts",
|
||||
"scripts": {
|
||||
"lint": "eslint . && prettier --check .",
|
||||
"fix": "eslint . --fix && prettier --write ."
|
||||
|
||||
Reference in New Issue
Block a user