Some checks are pending
E2E / Playwright e2e (push) Waiting to run
- Introduced turbopack alias for canvas in next.config.mjs. - Updated package.json scripts for development and branding tasks. - Added new dependencies for Tiptap extensions. - Implemented new demo layouts for agenda, contacts, drive, and mail applications. - Enhanced globals.css for improved theming and splash screen animations. - Added OAuth callback handling for drive mounts. - Updated layout components to integrate new demo shells and improve structure.
68 lines
1.4 KiB
TypeScript
68 lines
1.4 KiB
TypeScript
"use client"
|
|
|
|
import {
|
|
createContext,
|
|
useCallback,
|
|
useContext,
|
|
useMemo,
|
|
type ReactNode,
|
|
} from "react"
|
|
import { toast } from "sonner"
|
|
|
|
export const DEMO_MAIL_ROUTE_ROOT = "demo/mail"
|
|
export const DEFAULT_MAIL_ROUTE_ROOT = "mail"
|
|
|
|
type DemoMailContextValue = {
|
|
enabled: true
|
|
routeRoot: typeof DEMO_MAIL_ROUTE_ROOT
|
|
reset: () => void
|
|
notify: (message: string) => void
|
|
}
|
|
|
|
const DemoMailContext = createContext<DemoMailContextValue | null>(null)
|
|
|
|
export function DemoMailProvider({
|
|
children,
|
|
onReset,
|
|
}: {
|
|
children: ReactNode
|
|
onReset: () => void
|
|
}) {
|
|
const notify = useCallback((message: string) => {
|
|
toast.message(message, {
|
|
description: "Mode démo : rien n'est envoyé ni conservé.",
|
|
})
|
|
}, [])
|
|
|
|
const reset = useCallback(() => {
|
|
onReset()
|
|
notify("Démo réinitialisée")
|
|
}, [notify, onReset])
|
|
|
|
const value = useMemo<DemoMailContextValue>(
|
|
() => ({
|
|
enabled: true,
|
|
routeRoot: DEMO_MAIL_ROUTE_ROOT,
|
|
reset,
|
|
notify,
|
|
}),
|
|
[reset, notify]
|
|
)
|
|
|
|
return (
|
|
<DemoMailContext.Provider value={value}>{children}</DemoMailContext.Provider>
|
|
)
|
|
}
|
|
|
|
export function useDemoMail(): DemoMailContextValue | null {
|
|
return useContext(DemoMailContext)
|
|
}
|
|
|
|
export function useIsDemoMail(): boolean {
|
|
return useDemoMail()?.enabled ?? false
|
|
}
|
|
|
|
export function useMailRouteRoot(): string {
|
|
return useDemoMail()?.routeRoot ?? DEFAULT_MAIL_ROUTE_ROOT
|
|
}
|