Files
nextjs-template/components/providers.tsx
asepharyana 8093dd2b7f feat: setup full Next.js toolchain and core dependencies
- Add runtime deps: react-query, react-hook-form+zod, zustand, ky, openapi-fetch,
  better-auth, react-markdown, shiki, recharts, next-themes, nuqs, sonner, cmdk,
  vaul, embla-carousel-react, motion, date-fns, tailwind-merge, clsx, cva
- Add dev tooling: vitest, testing-library, playwright, prettier(+tailwind plugin),
  husky, lint-staged, jsdom
- Wire providers (QueryClient, Theme, NuqsAdapter, Tooltip, Sonner) into layout
- Add vitest/playwright/prettier configs + lint-staged pre-commit hook
- Add lib/query-client + lib/http (ky) helpers and sample unit test
- Fix react-hooks/set-state-in-effect lint errors (use-mobile useSyncExternalStore,
  carousel async init)
- Remove committed Next-generated types/ duplicates (regenerated under .next/types)
2026-09-19 19:24:48 +07:00

27 lines
931 B
TypeScript

"use client";
import * as React from "react";
import { QueryClientProvider } from "@tanstack/react-query";
import { ThemeProvider } from "next-themes";
import { NuqsAdapter } from "nuqs/adapters/next/app";
import { TooltipProvider } from "@/components/ui/tooltip";
import { Toaster } from "@/components/ui/sonner";
import { getQueryClient } from "@/lib/query-client";
export function Providers({ children }: { children: React.ReactNode }) {
const queryClient = React.useMemo(() => getQueryClient(), []);
return (
<QueryClientProvider client={queryClient}>
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
<NuqsAdapter>
<TooltipProvider delay={0}>
{children}
<Toaster richColors closeButton position="bottom-right" />
</TooltipProvider>
</NuqsAdapter>
</ThemeProvider>
</QueryClientProvider>
);
}