mirror of
https://github.com/linsa-io/linsa.git
synced 2026-01-12 12:20:23 +01:00
wip (#135)
This commit is contained in:
@@ -8,6 +8,7 @@ import { ClerkProviderClient } from "@/components/custom/clerk/clerk-provider-cl
|
|||||||
import { JotaiProvider } from "@/lib/providers/jotai-provider"
|
import { JotaiProvider } from "@/lib/providers/jotai-provider"
|
||||||
import { Toaster } from "@/components/ui/sonner"
|
import { Toaster } from "@/components/ui/sonner"
|
||||||
import { ConfirmProvider } from "@/lib/providers/confirm-provider"
|
import { ConfirmProvider } from "@/lib/providers/confirm-provider"
|
||||||
|
import { DeepLinkProvider } from "@/lib/providers/deep-link-provider"
|
||||||
|
|
||||||
const fontSans = FontSans({
|
const fontSans = FontSans({
|
||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
@@ -27,16 +28,18 @@ export default function RootLayout({
|
|||||||
return (
|
return (
|
||||||
<html lang="en" className="h-full w-full" suppressHydrationWarning>
|
<html lang="en" className="h-full w-full" suppressHydrationWarning>
|
||||||
<ClerkProviderClient>
|
<ClerkProviderClient>
|
||||||
<body className={cn("h-full w-full font-sans antialiased", fontSans.variable)}>
|
<DeepLinkProvider>
|
||||||
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
<body className={cn("h-full w-full font-sans antialiased", fontSans.variable)}>
|
||||||
<JotaiProvider>
|
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
||||||
<ConfirmProvider>
|
<JotaiProvider>
|
||||||
{children}
|
<ConfirmProvider>
|
||||||
<Toaster expand={false} />
|
{children}
|
||||||
</ConfirmProvider>
|
<Toaster expand={false} />
|
||||||
</JotaiProvider>
|
</ConfirmProvider>
|
||||||
</ThemeProvider>
|
</JotaiProvider>
|
||||||
</body>
|
</ThemeProvider>
|
||||||
|
</body>
|
||||||
|
</DeepLinkProvider>
|
||||||
</ClerkProviderClient>
|
</ClerkProviderClient>
|
||||||
</html>
|
</html>
|
||||||
)
|
)
|
||||||
|
|||||||
35
web/lib/providers/deep-link-provider.tsx
Normal file
35
web/lib/providers/deep-link-provider.tsx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import React, { useEffect, ReactNode } from "react"
|
||||||
|
|
||||||
|
interface DeepLinkProviderProps {
|
||||||
|
children: ReactNode
|
||||||
|
}
|
||||||
|
|
||||||
|
export function DeepLinkProvider({ children }: DeepLinkProviderProps) {
|
||||||
|
useEffect(() => {
|
||||||
|
const eventHandlers: { [key: string]: (event: Event) => void } = {
|
||||||
|
click: (event: Event) => {
|
||||||
|
const e = event as MouseEvent
|
||||||
|
console.log("Click event:", { x: e.clientX, y: e.clientY })
|
||||||
|
},
|
||||||
|
keydown: (event: Event) => {
|
||||||
|
const e = event as KeyboardEvent
|
||||||
|
console.log("Keydown event:", { key: e.key, code: e.code })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// just a react thing
|
||||||
|
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
|
||||||
|
window.addEventListener(eventType, handler)
|
||||||
|
})
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
Object.entries(eventHandlers).forEach(([eventType, handler]) => {
|
||||||
|
window.removeEventListener(eventType, handler)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
return <>{children}</>
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user