-
-
Notifications
You must be signed in to change notification settings - Fork 199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow nested providers #254
Comments
Hi @shekharkhedekar , I am using next-themes with TailwindCSS. It seems I can simply achieve nested themes like this:
import plugin from 'tailwindcss/plugin';
export default {
darkMode: 'class',
plugins: [
plugin(function ({ addUtilities }) {
const utilities = {
// light, dark color scheme
'.light': {
'color-scheme': 'light',
},
'.dark': {
'color-scheme': 'dark',
},
};
addUtilities(utilities);
}),
],
}; Then I can simply use this 'use client';
export default function Page() {
return (
<div className="border border-red-400 p-2">
<h1>default theme</h1>
<input type="text" />
<div className="border border-red-400 p-2 light">
<h1>light</h1>
<input type="text" />
<div className="border border-red-400 p-2 dark">
<h1>dark</h1>
<input type="text" />
<div className="border border-red-400 p-2 light">
<h1>light</h1>
<input type="text" />
</div>
</div>
</div>
</div>
);
} When I toggle the theme to In my app, I am forcing it to use <NextThemesProvider defaultTheme="dark" attribute="class">
...
</NextThemesProvider> |
@shrekuu we we're doing that as well, but we also needed to reference |
I made a library that supports this use case https://github.com/universse/palettez. |
@trm217 any news about this? |
@RafaelFerreiraTVD no news unfortunately. The owner of this project has been unresponsive for almost half a year now. Once the repo is being actively maintained again, I can look into this, once I have the time for it. As to why it is not possible as of now, this is simply due to how it's currently implemented. All theme providers share the same context, so if you nest them, the useTheme hook will always only relate to the closest context provider. |
I've got cases (stories in storybook) where I want to have multiple
ThemeProviders
e.g.
This currently does not work because of this code.
Currently, I'm forking your package and removing those lines to allow for nested providers. I'm also adding a component to add the theme class on container of the provider if the
forcedTheme
is set so the children will get the correct styles.Not sure if this contradicts your original design, but it would be useful to us.
The text was updated successfully, but these errors were encountered: