index.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from "react";
  2. import { Modal, ModalProps } from "src/components/Modal";
  3. import Toggle from "src/components/Toggle";
  4. import useStored from "src/store/useStored";
  5. import styled from "styled-components";
  6. import shallow from "zustand/shallow";
  7. const StyledToggle = styled(Toggle)`
  8. flex-flow: row-reverse;
  9. background: black;
  10. `;
  11. const StyledModalWrapper = styled.div`
  12. display: flex;
  13. flex-direction: column;
  14. gap: 20px;
  15. `;
  16. export const SettingsModal: React.FC<ModalProps> = ({ visible, setVisible }) => {
  17. const lightmode = useStored(state => state.lightmode);
  18. const setLightTheme = useStored(state => state.setLightTheme);
  19. const [toggleHideCollapse, hideCollapse] = useStored(
  20. state => [state.toggleHideCollapse, state.hideCollapse],
  21. shallow
  22. );
  23. const [toggleHideChildrenCount, hideChildrenCount] = useStored(
  24. state => [state.toggleHideChildrenCount, state.hideChildrenCount],
  25. shallow
  26. );
  27. return (
  28. <Modal visible={visible} setVisible={setVisible}>
  29. <Modal.Header>Settings</Modal.Header>
  30. <Modal.Content>
  31. <StyledModalWrapper>
  32. <StyledToggle onChange={toggleHideCollapse} checked={hideCollapse}>
  33. Hide Collapse/Expand Button
  34. </StyledToggle>
  35. <StyledToggle onChange={toggleHideChildrenCount} checked={hideChildrenCount}>
  36. Hide Children Count
  37. </StyledToggle>
  38. <StyledToggle onChange={() => setLightTheme(!lightmode)} checked={lightmode}>
  39. Enable Light Theme
  40. </StyledToggle>
  41. </StyledModalWrapper>
  42. </Modal.Content>
  43. <Modal.Controls setVisible={setVisible} />
  44. </Modal>
  45. );
  46. };