(squash) init

feat: filters, settings, backups

fix: ts compile errors

feat: new dashboard, webp previews and settings

feat: use webp for pdfs

feat: use webp

fix: analyze resets old data

fix: switch to corsproxy

fix: switch to free cors

fix: max upload limit

fix: currency conversion

feat: transaction export

fix: currency conversion

feat: refactor settings actions

feat: new loader

feat: README + LICENSE

doc: update readme

doc: update readme

doc: update readme

doc: update screenshots

ci: bump prisma
This commit is contained in:
Vasily Zubarev
2025-03-13 00:30:47 +01:00
commit 0b98a2c307
153 changed files with 17271 additions and 0 deletions

32
app/context.tsx Normal file
View File

@@ -0,0 +1,32 @@
"use client"
import { createContext, ReactNode, useContext, useState } from "react"
type Notification = {
code: string
message: string
}
type NotificationContextType = {
notification: Notification | null
showNotification: (notification: Notification) => void
}
const NotificationContext = createContext<NotificationContextType>({
notification: null,
showNotification: () => {},
})
export function NotificationProvider({ children }: { children: ReactNode }) {
const [notification, setNotification] = useState<Notification | null>(null)
const showNotification = (notification: Notification) => {
setNotification(notification)
}
return (
<NotificationContext.Provider value={{ notification, showNotification }}>{children}</NotificationContext.Provider>
)
}
export const useNotification = () => useContext(NotificationContext)