index.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 [
  20. toggleHideCollapse,
  21. toggleChildrenCount,
  22. toggleImagePreview,
  23. hideCollapse,
  24. childrenCount,
  25. imagePreview,
  26. ] = useStored(
  27. state => [
  28. state.toggleHideCollapse,
  29. state.toggleChildrenCount,
  30. state.toggleImagePreview,
  31. state.hideCollapse,
  32. state.childrenCount,
  33. state.imagePreview,
  34. ],
  35. shallow
  36. );
  37. return (
  38. <Modal visible={visible} setVisible={setVisible}>
  39. <Modal.Header>Settings</Modal.Header>
  40. <Modal.Content>
  41. <StyledModalWrapper>
  42. <StyledToggle onChange={toggleImagePreview} checked={imagePreview}>
  43. Live Image Preview
  44. </StyledToggle>
  45. <StyledToggle onChange={toggleHideCollapse} checked={hideCollapse}>
  46. Display Collapse/Expand Button
  47. </StyledToggle>
  48. <StyledToggle onChange={toggleChildrenCount} checked={childrenCount}>
  49. Display Children Count
  50. </StyledToggle>
  51. <StyledToggle onChange={() => setLightTheme(!lightmode)} checked={lightmode}>
  52. Light Theme
  53. </StyledToggle>
  54. </StyledModalWrapper>
  55. </Modal.Content>
  56. <Modal.Controls setVisible={setVisible} />
  57. </Modal>
  58. );
  59. };