Cookie Banner Component in the Next.js Supabase SaaS kit
Learn how to use the Cookie Banner component in the Next.js Supabase SaaS kit
This module provides a CookieBanner component and a useCookieConsent hook for managing cookie consent in React applications.
CookieBanner Component
The CookieBanner component displays a consent banner for cookies and tracking technologies.
Usage
import dynamic from 'next/dynamic';const CookieBanner = dynamic(() => import('@kit/ui/cookie-banner').then(m => m.CookieBanner), {  ssr: false});function App() {  return (    <div>      {/* Your app content */}      <CookieBanner />    </div>  );}Features
- Displays only when consent status is unknown
 - Automatically hides after user interaction
 - Responsive design (different layouts for mobile and desktop)
 - Internationalization support via the 
Transcomponent - Animated entrance using Tailwind CSS
 
useCookieConsent Hook
This custom hook manages the cookie consent state and provides methods to update it.
Usage
import { useCookieConsent } from '@kit/ui/cookie-banner';function MyComponent() {  const { status, accept, reject, clear } = useCookieConsent();  // Use these values and functions as needed}API
status: ConsentStatus: Current consent status (Accepted, Rejected, or Unknown)accept(): void: Function to accept cookiesreject(): void: Function to reject cookiesclear(): void: Function to clear the current consent status
ConsentStatus Enum
enum ConsentStatus {  Accepted = 'accepted',  Rejected = 'rejected',  Unknown = 'unknown'}Key Features
- Persistent Storage: Consent status is stored in localStorage for persistence across sessions.
 - Server-Side Rendering Compatible: Checks for browser environment before accessing localStorage.
 - Customizable: The 
COOKIE_CONSENT_STATUSkey can be configured as needed. - Reactive: The banner automatically updates based on the consent status.
 
Styling
The component uses Tailwind CSS for styling, with support for dark mode and responsive design.
Accessibility
- Uses Radix UI's Dialog primitive for improved accessibility
 - Autofocu s on the "Accept" button for keyboard navigation
 
Internationalization
The component uses the Trans component for internationalization. Ensure you have the following keys in your i18n configuration:
cookieBanner.titlecookieBanner.descriptioncookieBanner.rejectcookieBanner.accept
Best Practices
- Place the 
CookieBannercomponent at the root of your application to ensure it's always visible when needed. - Use the 
useCookieConsenthook to conditionally render content or initialize tracking scripts based on the user's consent. - Provide clear and concise information about your cookie usage in the banner description.
 - Ensure your privacy policy is up-to-date and accessible from the cookie banner or nearby.
 
Example: Conditional Script Loading
function App() {  const { status } = useCookieConsent();  useEffect(() => {    if (status === ConsentStatus.Accepted) {      // Initialize analytics or other cookie-dependent scripts    }  }, [status]);  return (    <div>      {/* Your app content */}      <CookieBanner />    </div>  );}This cookie consent management system provides a user-friendly way to comply with cookie laws and regulations while maintaining a good user experience.