import {ThemeContext, themes} from './theme-context';
import ThemedButton from './themed-button';

// Pośredni komponent, który używa przycisku ThemedButton
function Toolbar(props) {
  return (
    <ThemedButton onClick={props.changeTheme}>
      Zmień motyw
    </ThemedButton>
  );
}

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      theme: themes.light,
    };

    this.toggleTheme = () => {
      this.setState(state => ({
        theme:
          state.theme === themes.dark
            ? themes.light
            : themes.dark,
      }));
    };
  }

  render() {
    //highlight-range{1-3}
    // Przycisk ThemedButton wewnątrz komponentu ThemeProvider
    // korzysta z motywu przechowywanego w stanie, podczas gdy
    // ten zewnętrzny korzysta z domyślnego, ciemnego motywu
    //highlight-range{3-5,7}
    return (
      <Page>
        <ThemeContext.Provider value={this.state.theme}>
          <Toolbar changeTheme={this.toggleTheme} />
        </ThemeContext.Provider>
        <Section>
          <ThemedButton />
        </Section>
      </Page>
    );
  }
}

ReactDOM.render(<App />, document.root);
