storybookjs / react-native

📓 Storybook for React Native!
https://storybook.js.org
MIT License
996 stars 141 forks source link

Create global control shared by all stories #511

Open ayush-shta opened 10 months ago

ayush-shta commented 10 months ago

Is your feature request related to a problem? Please describe.

We have a global decorator that wraps all the stories with a "ThemeProvider" wrapper, something like this:

export const decorators = [
  (Story) => (
    <ThemeProvider theme={"light"}>
        <Story />
    </ThemeProvider>
  ),
];

The problem is that I can't find a way to provide control or anything to update the theme from each story.

Describe the solution you'd like I would want to be able to provide args, argTypes, or anything to the global decorator that allows me to update this theme prop for every story.

Describe alternatives you've considered

  1. I've looked into storybook documentation for React that allows us to define args at the global level in preview.js, but this does not seem to work with storybook version of react-native https://storybook.js.org/docs/6.5/react/writing-stories/args#global-args

  2. Also according to the React storybook documentation, we are able to specify "global types" in our toolbar, but seems like this addon is not supported in storybook react-native https://storybook.js.org/docs/6.5/react/essentials/toolbars-and-globals#globals

Are you able to assist bring the feature to reality? no

Additional context For context, I'm on storybook 6.5.6

dannyhw commented 10 months ago

@ayush-shta thanks for the feedback, I think it would be good to add this feature, I'll look into it.

mljlynch commented 8 months ago

You should be able to do something like

export const decorators = [
  (Story , { parameters }) => (
    const themeDetails = parameters.themeDetails
    <ThemeProvider theme={themeDetails}>
        <Story />
    </ThemeProvider>
  ),
];

To customize the theme per story.

YOEL311 commented 7 months ago

what about the toolbar, Why can't it be used in react-native?

dannyhw commented 7 months ago

@YOEL311 I'm not sure what toolbar your are referring to.

Also I've actually thought more about this and the solution provided by @mljlynch should actually be a good fit for whats mentioned in this issue.

My response about adding the feature was more about specifically supporting global args. However I believe that will work out of the box in version 7.

fabioatcorreia commented 1 month ago

I think they were referring to the @storybook/addon-toolbars addon, which does not seem to work in Storybook for React Native (as stated on point 2 from the issue description).

Are there any plans to have something similar working?