This commit is contained in:
michael committed 2026-09-08 16:48:28 +02:00
1 parent 3d9674bd5a
commit d1da86beab
20 files changed
+6109 -923

No files matched your search

+41
View File
@@ -12,6 +12,32 @@ export type AuthUser = {
active: boolean;
};
export type DashboardWidgetType = "today" | "month" | "openRatings" | "projectBudgets" | "todos" | "teamspace" | "favorites" | "divider" | "statistic" | "notes";
export type DashboardSortDirection = "asc" | "desc";
export type DashboardFavorite = {
ticketNumber: string;
addedAt: string;
sortOrder: number;
};
export type DashboardWidget = {
id: string;
type: DashboardWidgetType;
title?: string;
x: number;
y: number;
w: number;
h: number;
config?: Record<string, unknown>;
};
export type DashboardPreference = {
version: number;
widgets: DashboardWidget[];
favorites: DashboardFavorite[];
};
export type AdminUser = AuthUser & {
created_at: string;
updated_at: string;
@@ -64,6 +90,7 @@ export type TicketMeta = {
project_id?: string | null;
is_project?: boolean;
project_name?: string | null;
has_recurring_billing?: boolean;
};
export type TicketSearchResult = {
@@ -98,11 +125,19 @@ export type ProjectSummary = {
starts_on: string | null;
ends_on: string | null;
hour_budget_minutes: number | null;
manual_consumption_minutes: number;
teamspace_consumption_minutes?: number;
consumption_minutes?: number;
closed_at: string | null;
created_at: string;
updated_at: string;
session_count?: number;
recurring_session_count?: number;
manual_session_count?: number;
has_recurring_billing?: boolean;
billed_minutes?: number;
open_todos?: number;
overdue_todos?: number;
done_todos?: number;
};
@@ -120,6 +155,9 @@ export type TicketTodo = {
description: string;
priority: TodoPriority;
status: TodoStatus;
sort_order: number;
starts_on: string | null;
ends_on: string | null;
completed_at: string | null;
created_at: string;
updated_at: string;
@@ -133,6 +171,7 @@ export type TicketSummary = {
organization_name: string | null;
customer_name: string | null;
work_type: WorkType | null;
project_id: string | null;
session_count: number;
total_minutes: number;
non_billable_minutes: number;
@@ -159,6 +198,7 @@ export type OpenSession = {
work_type: WorkType;
started_at: string;
rounded_minutes: number;
recurring_billing_id?: string | null;
};
export type ActivityBucket = {
@@ -239,6 +279,7 @@ export type TicketPeriod = {
requires_closure: boolean;
recurring_session_count: number;
manual_session_count: number;
has_recurring_billing?: boolean;
};
sessions: SessionEntry[];
dayBillings: TicketDayBilling[];