feat(client): polish ViewHeader, library icon, and appearance fixes

This commit is contained in:
neon
2026-03-10 04:12:33 -06:00
parent a3579ac57f
commit 1d44702bec
62 changed files with 5362 additions and 525 deletions
+75
View File
@@ -0,0 +1,75 @@
import type { BooksPage } from './book';
export type AuthorSummary = {
id: number;
name: string;
sortName: string | null;
description?: string | null;
imageUrl?: string | null;
bookCount: number;
lastAddedAt: string | null;
};
export type AuthorDetail = AuthorSummary & {
description: string | null;
};
export type AuthorsPage = {
items: AuthorSummary[];
total: number;
page: number;
size: number;
};
export type AuthorBooksPage = BooksPage;
export type MergeAuthorsResult = {
target: AuthorDetail;
mergedAuthorIds: number[];
affectedBookCount: number;
};
export type AuthorDuplicateSuggestion = {
left: AuthorSummary;
right: AuthorSummary;
confidence: number;
reasons: string[];
};
export type AuthorInsightsRow = {
id: number;
name: string;
bookCount: number;
lastAddedAt: string | null;
metric: number;
secondaryMetric?: number | null;
};
export type AuthorInsights = {
generatedAt: string;
windowDays: number;
newAuthors: AuthorInsightsRow[];
mostRead: AuthorInsightsRow[];
unreadBacklog: AuthorInsightsRow[];
};
export const AuthorMetadataProviderKey = {
AUDNEXUS: 'audnexus',
} as const;
export type AuthorMetadataProviderKey = (typeof AuthorMetadataProviderKey)[keyof typeof AuthorMetadataProviderKey];
export type AuthorMetadataCandidate = {
provider: AuthorMetadataProviderKey;
providerId: string;
name: string;
description?: string;
imageUrl?: string;
sourceUrl?: string;
};
export type AuthorMetadataProviderInfo = {
key: AuthorMetadataProviderKey;
label: string;
identifiable: boolean;
};
+1
View File
@@ -15,3 +15,4 @@ export * from "./kobo";
export * from "./staging";
export * from "./file-write";
export * from "./epub";
export * from "./author";