feat: standardize input styling with tier system, add depth and admin features
- Define 4 input tier CSS classes (input-standard, input-search, input-embedded, input-danger) in globals.css, migrating ~50 inputs across ~28 component files to use them - Add subtle border and inset shadow to solid input tiers for resting-state visibility - Fix focus ring clipping in settings panel scroll container - Fix phantom Tailwind tokens (border-border-primary, placeholder-txt-muted) - Add admin user management panel, storage management, and account deletion utilities
This commit is contained in:
@@ -561,3 +561,63 @@ export interface DeleteAccountRequest {
|
||||
password: string;
|
||||
username: string; // Must match — confirmation safeguard
|
||||
}
|
||||
|
||||
// ─── Storage Management Types ─────────────────────────────────────────────
|
||||
|
||||
export interface StorageBreakdown {
|
||||
type: string; // 'image' | 'video' | 'audio' | 'document' | 'other'
|
||||
count: number;
|
||||
size: number;
|
||||
}
|
||||
|
||||
export interface StorageStats {
|
||||
totalFiles: number;
|
||||
totalSize: number;
|
||||
referencedFiles: number;
|
||||
referencedSize: number;
|
||||
orphanedFiles: number;
|
||||
orphanedSize: number;
|
||||
unlinkedAttachments: number;
|
||||
unlinkedSize: number;
|
||||
breakdown: StorageBreakdown[];
|
||||
}
|
||||
|
||||
export interface OrphanedFile {
|
||||
filename: string;
|
||||
size: number;
|
||||
modifiedAt: number;
|
||||
}
|
||||
|
||||
export interface CleanupResult {
|
||||
dryRun: boolean;
|
||||
deletedFiles: number;
|
||||
freedBytes: number;
|
||||
deletedAttachmentRecords: number;
|
||||
errors: string[];
|
||||
}
|
||||
|
||||
// ─── Admin User Management Types ──────────────────────────────────────────
|
||||
|
||||
export interface AdminUser {
|
||||
id: string;
|
||||
username: string;
|
||||
displayName: string | null;
|
||||
avatar: string | null;
|
||||
avatarColor: string | null;
|
||||
status: string;
|
||||
isAdmin: boolean;
|
||||
isDeleted: boolean;
|
||||
homeInstance: string | null;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
export interface AdminUserListResponse {
|
||||
users: AdminUser[];
|
||||
total: number;
|
||||
page: number;
|
||||
pageSize: number;
|
||||
}
|
||||
|
||||
export interface AdminResetPasswordResponse {
|
||||
temporaryPassword: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user