fix: restore complete admin feature dependencies

This commit is contained in:
Simo committed 2026-07-11 21:15:54 +02:00
1 parent 5b4228261a
commit 0cd753c735
115 files changed
+18565 -4930

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
export interface PermissionSet {
has(permission: string): boolean
hasAny(...permissions: string[]): boolean
hasAll(...permissions: string[]): boolean
isSuperAdmin: boolean
}
export type WebhookAction =
| 'ban'
| 'unban'
| 'kick'
| 'disconnect'
| 'room_delete'
| 'user_edit'
| 'user_create'
| 'news_publish'
| 'news_delete'
| 'hotel_alert'
| 'staff_alert'
| 'ticket_create'
| 'event_create'
| 'event_update'
| 'event_cancel'
| 'poll_create'
| 'poll_close'
type AvatarSize = 's' | 'm' | 'l'
type Direction = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
export interface AvatarOptions {
/** Avatar size: s (small), m (medium), l (large) */
size?: AvatarSize
/** Body direction (0-7) */
direction?: Direction
/** Head direction (0-7) */
headDirection?: Direction
/** Show only the head */
headOnly?: boolean
/** Gesture: sml (smile), srp (surprised), sad, etc. */
gesture?: string
/** Action: wav, sit, lay, etc. */
action?: string
}
+49
View File
@@ -0,0 +1,49 @@
export interface TreeNode {
id: number
caption: string
parentId: number
depth: number
orderNum: number
enabled: string
visible: string
iconImage: number
iconColor: number
pageLayout: string
childCount: number
itemCount: number
}
export interface NestedTreeNode extends TreeNode {
children: NestedTreeNode[]
}
export interface TreeNodeData {
id: number
caption: string
parentId: number
enabled: string
visible: string
iconImage: number
iconColor: number
pageLayout: string
childCount: number
itemCount: number
}
export interface TreeNodeUpdate {
id: number
caption?: string
enabled?: string
visible?: string
pageLayout?: string
iconImage?: number
}
export interface RootTab {
id: number
caption: string
iconImage: number
enabled: string
orderNum: number
}
+42
View File
@@ -0,0 +1,42 @@
export interface PaginatedResult<T> {
rows: T[]
total: number
page: number
perPage: number
lastPage: number
}
export interface ListParams {
search: string
perPage: number
page: number
sort?: string
order?: 'asc' | 'desc'
}
export interface DataTableFilterOption {
label: string
value: string
}
export interface DataTableColumn<T> {
key: (keyof T & string) | (string & {})
label: string
sortable?: boolean
render?: (value: T[keyof T], row: T) => React.ReactNode
filterOptions?: DataTableFilterOption[]
filterKey?: string
}
export interface StatsCard {
label: string
value: number | string
description?: string
icon?: React.ReactNode
}
export interface BreadcrumbItem {
label: string
href?: string
}
+97
View File
@@ -0,0 +1,97 @@
export interface HabboFurniItem {
id: number
classname: string
type: string
name: string
description: string
revision: number
category: string
}
export interface FurniListResult {
items: HabboFurniItem[]
meta: { currentPage: number; lastPage: number; total: number; perPage: number }
}
export interface FurniMetadata {
visualizationType: string
logicType: string
canstandon: boolean
cansiton: boolean
canlayon: boolean
specialtype: number
defaultdir: number
partcolors: { color: string[] }
}
export interface ConversionResult {
bundle: Buffer
classname: string
dimensions: { x: number; y: number; z: number }
directions: number[]
spriteCount: number
warnings: string[]
metadata: FurniMetadata
}
export interface BatchConversionItem {
swfBuffer: Buffer
classname: string
}
export interface BatchConversionResult {
classname: string
success: boolean
bundle?: Buffer
dimensions?: { x: number; y: number; z: number }
directions?: number[]
spriteCount?: number
warnings: string[]
error?: string
}
export interface HabboItFurniEntry {
id: number
classname: string
revision: number
category: string
defaultdir: number
xdim: number
ydim: number
partcolors: { color: string[] }
name: string
description: string
specialtype: number
canstandon: boolean
cansiton: boolean
canlayon: boolean
furniline: string
environment: string
rare: boolean
tradeable?: boolean
bc?: boolean
customparams?: string | null
itemType: 's' | 'i'
}
export interface HabboAssetBadge {
id: number
code: string
name: string
description: string
hotel: string
url_habbo: string
url_habboassets: string
}
export interface ImportSingleResult {
ok: boolean
itemId?: number
catalogItemId?: number | null
dimensions?: { x: number; y: number; z: number }
spriteCount?: number
warnings: string[]
error?: string
furniDataEntry?: { entry: Record<string, unknown>; itemType: string }
}
+6
View File
@@ -0,0 +1,6 @@
export * from './admin'
export * from './catalog'
export * from './common'
export * from './furni'
export * from './prisma'
+7
View File
@@ -0,0 +1,7 @@
declare module "lzma" {
const lzma: {
decompress(input: Buffer | Uint8Array | number[]): number[];
compress(input: string | Uint8Array | number[], mode?: number): number[];
};
export default lzma;
}
+16
View File
@@ -0,0 +1,16 @@
import type { Ban, User, UsersCurrency } from "@/generated/prisma/client";
export type UserWithCurrencies = User & { currencies: UsersCurrency[] };
export type UserWithPermission = User & { permission: { rankName: string } };
export type UserPublicPreview = Pick<User, "id" | "username" | "look" | "motto">;
export interface NotificationRow {
id: number;
userId: number;
type: string;
title: string;
message: string;
link: string | null;
readAt: string | null;
createdAt: string;
}
export type BanWithStaff = Ban & { staff: Pick<User, "id" | "username"> };