LogQueryModeSelectionToggle.tsx 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import DateTimePicker from "components/date-time-picker/DateTimePicker";
  2. import dayjs from "dayjs";
  3. import time from "assets/time.svg";
  4. import React from "react";
  5. import styled from "styled-components";
  6. interface LogQueryModeSelectionToggleProps {
  7. selectedDate?: Date;
  8. setSelectedDate: (date?: Date) => void;
  9. resetSearch: () => void;
  10. }
  11. const LogQueryModeSelectionToggle = (
  12. props: LogQueryModeSelectionToggleProps
  13. ) => {
  14. return (
  15. <div
  16. style={{
  17. marginRight: "10px",
  18. display: "flex",
  19. gap: "10px",
  20. }}
  21. >
  22. <ToggleButton>
  23. <ToggleOption
  24. onClick={() => {
  25. props.setSelectedDate(undefined);
  26. props.resetSearch();
  27. }}
  28. selected={!props.selectedDate}
  29. >
  30. <Dot selected={!props.selectedDate} />
  31. Live
  32. </ToggleOption>
  33. <ToggleOption
  34. nudgeLeft
  35. onClick={() => props.setSelectedDate(dayjs().toDate())}
  36. selected={!!props.selectedDate}
  37. >
  38. <TimeIcon src={time} selected={!!props.selectedDate} />
  39. {props.selectedDate && (
  40. <DateTimePicker
  41. startDate={props.selectedDate}
  42. setStartDate={props.setSelectedDate}
  43. />
  44. )}
  45. </ToggleOption>
  46. </ToggleButton>
  47. </div>
  48. );
  49. };
  50. export default LogQueryModeSelectionToggle;
  51. const ToggleOption = styled.div<{ selected: boolean; nudgeLeft?: boolean }>`
  52. padding: 0 10px;
  53. color: ${(props) => (props.selected ? "" : "#494b4f")};
  54. border: 1px solid #494b4f;
  55. height: 100%;
  56. display: flex;
  57. margin-left: ${(props) => (props.nudgeLeft ? "-1px" : "")};
  58. align-items: center;
  59. border-radius: ${(props) =>
  60. props.nudgeLeft ? "0 5px 5px 0" : "5px 0 0 5px"};
  61. :hover {
  62. border: 1px solid #7a7b80;
  63. z-index: 2;
  64. }
  65. `;
  66. const ToggleButton = styled.div`
  67. background: #26292e;
  68. border-radius: 5px;
  69. font-size: 13px;
  70. height: 30px;
  71. display: flex;
  72. align-items: center;
  73. cursor: pointer;
  74. `;
  75. const TimeIcon = styled.img<{ selected?: boolean }>`
  76. width: 16px;
  77. height: 16px;
  78. z-index: 2;
  79. opacity: ${(props) => (props.selected ? "" : "50%")};
  80. `;
  81. const Dot = styled.div<{ selected?: boolean }>`
  82. display: inline-black;
  83. width: 8px;
  84. height: 8px;
  85. margin-right: 9px;
  86. border-radius: 20px;
  87. background: ${(props) => (props.selected ? "#ed5f85" : "#ffffff22")};
  88. border: 0px;
  89. outline: none;
  90. box-shadow: ${(props) => (props.selected ? "0px 0px 5px 1px #ed5f85" : "")};
  91. `;