Adiciona sistema completo de preferências de usuário: - Cria tabela userPreferences no schema com campos disableMagnetlines, periodMonthsBefore e periodMonthsAfter - Implementa página de Ajustes com abas (Preferências, Alterar nome, Senha, E-mail, Deletar conta) - Adiciona componente PreferencesForm para configuração de magnetlines e períodos de exibição - Propaga periodPreferences para todos os componentes de lançamentos e calendário Refatora sistema de changelog: - Remove implementação anterior baseada em JSON estático - Adiciona nova página de changelog dinâmica em app/(dashboard)/changelog - Adiciona componente changelog-list.tsx - Remove arquivos obsoletos (changelog-notification, actions, data, utils, scripts) Adiciona controle de saldo inicial em contas: - Novo campo excludeInitialBalanceFromIncome em contas - Permite excluir saldo inicial do cálculo de receitas - Atualiza queries de lançamentos para respeitar esta configuração Melhorias adicionais: - Adiciona componente ui/accordion.tsx do shadcn/ui - Refatora formatPeriodLabel para displayPeriod centralizado - Propaga estabelecimentos para componentes de lançamentos - Remove variável DB_PROVIDER obsoleta do .env.example e documentação - Adiciona 6 migrações de banco de dados (0003-0008)
64 lines
1.4 KiB
TypeScript
64 lines
1.4 KiB
TypeScript
import type { LancamentoItem, SelectOption } from "@/components/lancamentos/types";
|
|
import type { PeriodPreferences } from "@/lib/user-preferences/period";
|
|
|
|
export type CalendarEventType = "lancamento" | "boleto" | "cartao";
|
|
|
|
export type CalendarEvent =
|
|
| {
|
|
id: string;
|
|
type: "lancamento";
|
|
date: string;
|
|
lancamento: LancamentoItem;
|
|
}
|
|
| {
|
|
id: string;
|
|
type: "boleto";
|
|
date: string;
|
|
lancamento: LancamentoItem;
|
|
}
|
|
| {
|
|
id: string;
|
|
type: "cartao";
|
|
date: string;
|
|
card: {
|
|
id: string;
|
|
name: string;
|
|
dueDay: string;
|
|
closingDay: string;
|
|
brand: string | null;
|
|
status: string;
|
|
logo: string | null;
|
|
totalDue: number | null;
|
|
};
|
|
};
|
|
|
|
export type CalendarPeriod = {
|
|
period: string;
|
|
monthName: string;
|
|
year: number;
|
|
};
|
|
|
|
export type CalendarDay = {
|
|
date: string;
|
|
label: string;
|
|
isCurrentMonth: boolean;
|
|
isToday: boolean;
|
|
events: CalendarEvent[];
|
|
};
|
|
|
|
export type CalendarFormOptions = {
|
|
pagadorOptions: SelectOption[];
|
|
splitPagadorOptions: SelectOption[];
|
|
defaultPagadorId: string | null;
|
|
contaOptions: SelectOption[];
|
|
cartaoOptions: SelectOption[];
|
|
categoriaOptions: SelectOption[];
|
|
estabelecimentos: string[];
|
|
periodPreferences: PeriodPreferences;
|
|
};
|
|
|
|
export type CalendarData = {
|
|
events: CalendarEvent[];
|
|
formOptions: CalendarFormOptions;
|
|
};
|