feat: revue de code, doc CODE_REVIEW, forfaits 2026, traduction LLM, providers avec modèle

Made-with: Cursor
This commit is contained in:
Sepehr Ramezani
2026-03-07 11:42:58 +01:00
parent 3d37ce4582
commit 473b3e26c7
181 changed files with 30617 additions and 7170 deletions

View File

@@ -1,3 +1,5 @@
"use client"
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { X, CheckCircle, AlertCircle, AlertTriangle, Info, Loader2 } from "lucide-react"
@@ -189,23 +191,25 @@ const Notification = React.forwardRef<HTMLDivElement, NotificationProps>(
Notification.displayName = "Notification"
// Notification Context
type NotificationItem = {
id: string
title?: string
description?: string
variant?: VariantProps<typeof notificationVariants>["variant"]
duration?: number
action?: React.ReactNode
icon?: React.ReactNode
closable?: boolean
autoClose?: boolean
}
interface NotificationContextType {
notifications: Array<{
id: string
title?: string
description?: string
variant?: VariantProps<typeof notificationVariants>["variant"]
duration?: number
action?: React.ReactNode
icon?: React.ReactNode
closable?: boolean
autoClose?: boolean
}>
notify: (notification: Omit<NotificationContextType["notifications"][0], "id">) => void
success: (notification: Omit<NotificationContextType["notifications"][0], "variant">) => void
error: (notification: Omit<NotificationContextType["notifications"][0], "variant">) => void
warning: (notification: Omit<NotificationContextType["notifications"][0], "variant">) => void
info: (notification: Omit<NotificationContextType["notifications"][0], "variant">) => void
notifications: NotificationItem[]
notify: (notification: Omit<NotificationItem, "id">) => void
success: (notification: Omit<NotificationItem, "id" | "variant">) => void
error: (notification: Omit<NotificationItem, "id" | "variant">) => void
warning: (notification: Omit<NotificationItem, "id" | "variant">) => void
info: (notification: Omit<NotificationItem, "id" | "variant">) => void
dismiss: (id: string) => void
dismissAll: () => void
}
@@ -213,10 +217,10 @@ interface NotificationContextType {
const NotificationContext = React.createContext<NotificationContextType | undefined>(undefined)
export function NotificationProvider({ children }: { children: React.ReactNode }) {
const [notifications, setNotifications] = React.useState<NotificationContextType["notifications"]>([])
const [notifications, setNotifications] = React.useState<NotificationItem[]>([])
const notify = React.useCallback(
(notification: Omit<NotificationContextType["notifications"][0], "id">) => {
(notification: Omit<NotificationItem, "id">) => {
const id = Math.random().toString(36).substr(2, 9)
setNotifications(prev => [...prev, { ...notification, id }])
},
@@ -224,25 +228,25 @@ export function NotificationProvider({ children }: { children: React.ReactNode }
)
const success = React.useCallback(
(notification: Omit<NotificationContextType["notifications"][0], "variant">) =>
(notification: Omit<NotificationItem, "id" | "variant">) =>
notify({ ...notification, variant: "success" }),
[notify]
)
const error = React.useCallback(
(notification: Omit<NotificationContextType["notifications"][0], "variant">) =>
(notification: Omit<NotificationItem, "id" | "variant">) =>
notify({ ...notification, variant: "destructive" }),
[notify]
)
const warning = React.useCallback(
(notification: Omit<NotificationContextType["notifications"][0], "variant">) =>
(notification: Omit<NotificationItem, "id" | "variant">) =>
notify({ ...notification, variant: "warning" }),
[notify]
)
const info = React.useCallback(
(notification: Omit<NotificationContextType["notifications"][0], "variant">) =>
(notification: Omit<NotificationItem, "id" | "variant">) =>
notify({ ...notification, variant: "info" }),
[notify]
)