From ea2d02bd52de34c6cd2390d160ffe7f14319d5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Weng?= Date: Thu, 17 Oct 2024 03:33:46 +0200 Subject: [PATCH] fix: remove hydration error and unify with pro version 1.6.1 --- README.md | 2 ++ public/assets/images/clerk-logo-dark.png | Bin 3934 -> 4107 bytes public/assets/images/clerk-logo-white.png | Bin 0 -> 3690 bytes src/app/[locale]/(auth)/layout.tsx | 3 +++ src/app/[locale]/layout.tsx | 10 ++++++++-- src/components/LocaleSwitcher.tsx | 2 +- src/components/ui/data-table.tsx | 2 +- src/features/billing/PricingCard.tsx | 4 ++-- src/features/billing/PricingInformation.tsx | 5 ++--- src/features/dashboard/DashboardHeader.tsx | 6 ++++-- src/features/landing/CenteredFooter.tsx | 5 ++--- src/features/landing/CenteredMenu.tsx | 2 +- src/features/landing/FeatureCard.tsx | 2 +- src/locales/en.json | 3 ++- src/locales/fr.json | 5 +++-- src/templates/Navbar.tsx | 1 + src/utils/AppConfig.ts | 10 +++++----- tailwind.config.ts | 1 - 18 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 public/assets/images/clerk-logo-white.png diff --git a/README.md b/README.md index 7464661..77c0080 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,8 @@ You can easily configure Next.js SaaS Boilerplate by searching the entire projec You have full access to the source code for further customization. The provided code is just an example to help you start your project. The sky's the limit 🚀. +In the source code, you will also find `PRO` comments that indicate the code that is only available in the PRO version. You can easily remove or replace this code with your own implementation. + ### Change database schema To modify the database schema in the project, you can update the schema file located at `./src/models/Schema.ts`. This file defines the structure of your database tables using the Drizzle ORM library. diff --git a/public/assets/images/clerk-logo-dark.png b/public/assets/images/clerk-logo-dark.png index d2c79e21586175356727a5adbcc3a1b1993d2bf6..979c8cddcd340458474602af07da8ae53df652c2 100644 GIT binary patch delta 3718 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 delta 3544 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 IM6N<$f is used to prevent hydration errors caused by `next-themes`. + // Solution provided by the package itself: https://github.com/pacocoursey/next-themes?tab=readme-ov-file#with-app + + // The `suppressHydrationWarning` attribute in is used to prevent hydration errors caused by Sentry Overlay, + // which dynamically adds a `style` attribute to the body tag. return ( - - + + + {/* PRO: Dark mode support for Shadcn UI */} { return ( -