-
Notifications
You must be signed in to change notification settings - Fork 90
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
feat(theming): add ColorSchemeProvider
#1991
Conversation
…re a color scheme provider
initialColorScheme
to ThemeProvider
to configure a color scheme providerColorSchemeProvider
|
||
<Canvas> | ||
<Story name="ThemeProvider" args={{ theme: DEFAULT_THEME }}> | ||
{args => <ThemeProvider {...args} />} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I realize this is currently empty – the Story
was needed to get generated API docs. We can fill it with something meaningful in the future if/when 💡 strikes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Long overdue review!😅 Great work! 💯
Description
The following PR adds a
ColorSchemeProvider
anduseColorScheme
hook. The provider can be used to 1) determine the user's current theme and 2) persistently update (tolocalStorage
) any color scheme changes made by the user (which overrideinitialColorScheme
). The hook is available to child components of<ColorSchemeProvider>
:Any attempt to invoke the hook outside of this context will result in an error. The
localStorage
key defaults to'color-scheme'
but can be customized with thecolorSchemeKey
prop. Consumers are expected to take the value ofcolorScheme
and modify the root theme accordingly:Detail
I took a few swings at the API and feel like it ended up in a good place – balancing leverage with flexibility. But please view with a critical eye and provide feedback 🙏
Checklist
design updates will be Garden Designer approved (add the designer as a reviewer)npm start
)renders as expected with reversed (RTL) direction?bedrock
)tested for WCAG 2.1 AA accessibility compliance