diff --git a/app/components/Notifications/NotificationIcon.tsx b/app/components/Notifications/NotificationIcon.tsx
index 22ae3ce3e..6a674668d 100644
--- a/app/components/Notifications/NotificationIcon.tsx
+++ b/app/components/Notifications/NotificationIcon.tsx
@@ -1,19 +1,18 @@
import { observer } from "mobx-react";
import { SubscribeIcon } from "outline-icons";
import * as React from "react";
-import styled, { useTheme } from "styled-components";
+import styled from "styled-components";
import { s } from "@shared/styles";
import useStores from "~/hooks/useStores";
import Relative from "../Sidebar/components/Relative";
const NotificationIcon = () => {
const { notifications } = useStores();
- const theme = useTheme();
const count = notifications.approximateUnreadCount;
return (
-
+
{count > 0 && }
);
diff --git a/app/components/Sidebar/App.tsx b/app/components/Sidebar/App.tsx
index 004ad890c..61a6176bd 100644
--- a/app/components/Sidebar/App.tsx
+++ b/app/components/Sidebar/App.tsx
@@ -1,5 +1,11 @@
import { observer } from "mobx-react";
-import { EditIcon, SearchIcon, ShapesIcon, HomeIcon } from "outline-icons";
+import {
+ EditIcon,
+ SearchIcon,
+ ShapesIcon,
+ HomeIcon,
+ SidebarIcon,
+} from "outline-icons";
import * as React from "react";
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
@@ -14,7 +20,7 @@ import useCurrentUser from "~/hooks/useCurrentUser";
import usePolicy from "~/hooks/usePolicy";
import useStores from "~/hooks/useStores";
import OrganizationMenu from "~/menus/OrganizationMenu";
-import Desktop from "~/utils/Desktop";
+import { metaDisplay } from "~/utils/keyboard";
import {
homePath,
draftsPath,
@@ -22,23 +28,23 @@ import {
searchPath,
} from "~/utils/routeHelpers";
import TeamLogo from "../TeamLogo";
+import Tooltip from "../Tooltip";
import Sidebar from "./Sidebar";
import ArchiveLink from "./components/ArchiveLink";
import Collections from "./components/Collections";
import DragPlaceholder from "./components/DragPlaceholder";
-import FullWidthButton, {
- FullWidthButtonProps,
-} from "./components/FullWidthButton";
import HistoryNavigation from "./components/HistoryNavigation";
import Section from "./components/Section";
import SidebarAction from "./components/SidebarAction";
+import SidebarButton, { SidebarButtonProps } from "./components/SidebarButton";
import SidebarLink from "./components/SidebarLink";
import Starred from "./components/Starred";
+import ToggleButton from "./components/ToggleButton";
import TrashLink from "./components/TrashLink";
function AppSidebar() {
const { t } = useTranslation();
- const { documents } = useStores();
+ const { documents, ui } = useStores();
const team = useCurrentTeam();
const user = useCurrentUser();
const can = usePolicy(team);
@@ -59,6 +65,15 @@ function AppSidebar() {
[dndArea]
);
+ const handleToggleSidebar = React.useCallback(
+ (ev) => {
+ ev.preventDefault();
+ ev.stopPropagation();
+ ui.toggleCollapsedSidebar();
+ },
+ [ui]
+ );
+
return (
@@ -67,23 +82,31 @@ function AppSidebar() {
- {(props: FullWidthButtonProps) => (
- (
+
}
- style={
- // Move the logo over to align with smaller size
- Desktop.hasInsetTitlebar() ? { paddingLeft: 8 } : undefined
- }
- showDisclosure
- />
+ >
+
+ }
+ onClick={handleToggleSidebar}
+ />
+
+
)}
diff --git a/app/components/Sidebar/Settings.tsx b/app/components/Sidebar/Settings.tsx
index 14a051e37..a4e03552f 100644
--- a/app/components/Sidebar/Settings.tsx
+++ b/app/components/Sidebar/Settings.tsx
@@ -11,10 +11,10 @@ import useSettingsConfig from "~/hooks/useSettingsConfig";
import Desktop from "~/utils/Desktop";
import isCloudHosted from "~/utils/isCloudHosted";
import Sidebar from "./Sidebar";
-import FullWidthButton from "./components/FullWidthButton";
import Header from "./components/Header";
import HistoryNavigation from "./components/HistoryNavigation";
import Section from "./components/Section";
+import SidebarButton from "./components/SidebarButton";
import SidebarLink from "./components/SidebarLink";
import Version from "./components/Version";
@@ -31,7 +31,7 @@ function SettingsSidebar() {
return (
- }
onClick={returnToApp}
diff --git a/app/components/Sidebar/Shared.tsx b/app/components/Sidebar/Shared.tsx
index 52843feec..7efaf46ec 100644
--- a/app/components/Sidebar/Shared.tsx
+++ b/app/components/Sidebar/Shared.tsx
@@ -11,9 +11,9 @@ import { homePath, sharedDocumentPath } from "~/utils/routeHelpers";
import { useTeamContext } from "../TeamContext";
import TeamLogo from "../TeamLogo";
import Sidebar from "./Sidebar";
-import FullWidthButton from "./components/FullWidthButton";
import Section from "./components/Section";
import DocumentLink from "./components/SharedDocumentLink";
+import SidebarButton from "./components/SidebarButton";
type Props = {
rootNode: NavigationNode;
@@ -28,7 +28,7 @@ function SharedSidebar({ rootNode, shareId }: Props) {
return (
{team && (
- }
onClick={() =>
diff --git a/app/components/Sidebar/Sidebar.tsx b/app/components/Sidebar/Sidebar.tsx
index 82b47a41b..bf22e985d 100644
--- a/app/components/Sidebar/Sidebar.tsx
+++ b/app/components/Sidebar/Sidebar.tsx
@@ -1,9 +1,8 @@
import { observer } from "mobx-react";
import * as React from "react";
-import { useTranslation } from "react-i18next";
import { Portal } from "react-portal";
import { useLocation } from "react-router-dom";
-import styled, { useTheme } from "styled-components";
+import styled, { css, useTheme } from "styled-components";
import breakpoint from "styled-components-breakpoint";
import { depths, s } from "@shared/styles";
import Flex from "~/components/Flex";
@@ -17,25 +16,23 @@ import Desktop from "~/utils/Desktop";
import Avatar from "../Avatar";
import NotificationIcon from "../Notifications/NotificationIcon";
import NotificationsPopover from "../Notifications/NotificationsPopover";
-import FullWidthButton, {
- FullWidthButtonProps,
-} from "./components/FullWidthButton";
import ResizeBorder from "./components/ResizeBorder";
-import Toggle, { ToggleButton, Positioner } from "./components/Toggle";
+import SidebarButton, { SidebarButtonProps } from "./components/SidebarButton";
+import ToggleButton from "./components/ToggleButton";
const ANIMATION_MS = 250;
type Props = {
children: React.ReactNode;
+ className?: string;
};
const Sidebar = React.forwardRef(function _Sidebar(
- { children }: Props,
+ { children, className }: Props,
ref: React.RefObject
) {
const [isCollapsing, setCollapsing] = React.useState(false);
const theme = useTheme();
- const { t } = useTranslation();
const { ui, auth } = useStores();
const location = useLocation();
const previousLocation = usePrevious(location);
@@ -48,6 +45,7 @@ const Sidebar = React.forwardRef(function _Sidebar(
const setWidth = ui.setSidebarWidth;
const [offset, setOffset] = React.useState(0);
+ const [isHovering, setHovering] = React.useState(false);
const [isAnimating, setAnimating] = React.useState(false);
const [isResizing, setResizing] = React.useState(false);
const isSmallerThanMinimum = width < minWidth;
@@ -101,6 +99,22 @@ const Sidebar = React.forwardRef(function _Sidebar(
[width]
);
+ const handlePointerMove = React.useCallback(() => {
+ setHovering(true);
+ }, []);
+
+ const handlePointerLeave = React.useCallback(
+ (ev) => {
+ setHovering(
+ ev.pageX < width &&
+ ev.pageX > 0 &&
+ ev.pageY < window.innerHeight &&
+ ev.pageY > 0
+ );
+ },
+ [width]
+ );
+
React.useEffect(() => {
if (isAnimating) {
setTimeout(() => setAnimating(false), ANIMATION_MS);
@@ -149,23 +163,19 @@ const Sidebar = React.forwardRef(function _Sidebar(
[width]
);
- const toggleStyle = React.useMemo(
- () => ({
- right: "auto",
- marginLeft: `${collapsed ? theme.sidebarCollapsedWidth : width}px`,
- }),
- [width, theme.sidebarCollapsedWidth, collapsed]
- );
-
return (
<>
{ui.mobileSidebarVisible && (
@@ -177,31 +187,32 @@ const Sidebar = React.forwardRef(function _Sidebar(
{user && (
- {(props: FullWidthButtonProps) => (
- (
+
}
>
- {(rest: FullWidthButtonProps) => (
- (
+ }
/>
)}
-
+
)}
)}
@@ -209,28 +220,11 @@ const Sidebar = React.forwardRef(function _Sidebar(
onMouseDown={handleMouseDown}
onDoubleClick={ui.sidebarIsClosed ? undefined : handleReset}
/>
- {ui.sidebarIsClosed && (
-
- )}
-
>
);
});
-const StyledAvatar = styled(Avatar)`
- margin-left: 4px;
-`;
-
const Backdrop = styled.a`
animation: ${fadeIn} 250ms ease-in-out;
position: fixed;
@@ -247,16 +241,33 @@ type ContainerProps = {
$mobileSidebarVisible: boolean;
$isAnimating: boolean;
$isSmallerThanMinimum: boolean;
+ $isHovering: boolean;
$collapsed: boolean;
};
+const hoverStyles = (props: ContainerProps) => `
+ transform: none;
+ box-shadow: ${
+ props.$collapsed
+ ? "rgba(0, 0, 0, 0.2) 1px 0 4px"
+ : props.$isSmallerThanMinimum
+ ? "rgba(0, 0, 0, 0.1) inset -1px 0 2px"
+ : "none"
+ };
+
+ ${ToggleButton} {
+ opacity: 1;
+ }
+`;
+
const Container = styled(Flex)`
position: fixed;
top: 0;
bottom: 0;
width: 100%;
background: ${s("sidebarBackground")};
- transition: box-shadow 100ms ease-in-out, transform 100ms ease-out,
+ transition: box-shadow 100ms ease-in-out, opacity 100ms ease-in-out,
+ transform 100ms ease-out,
${s("backgroundTransition")}
${(props: ContainerProps) =>
props.$isAnimating ? `,width ${ANIMATION_MS}ms ease-out` : ""};
@@ -268,15 +279,15 @@ const Container = styled(Flex)`
min-width: 280px;
${fadeOnDesktopBackgrounded()}
- ${Positioner} {
- display: none;
- }
-
@media print {
display: none;
transform: none;
}
+ & > div {
+ opacity: ${(props) => (props.$collapsed && !props.$isHovering ? "0" : "1")};
+ }
+
${breakpoint("tablet")`
margin: 0;
min-width: 0;
@@ -285,28 +296,14 @@ const Container = styled(Flex)`
? `calc(-100% + ${Desktop.hasInsetTitlebar() ? 8 : 16}px)`
: 0});
- &:hover,
+ ${(props: ContainerProps) => props.$isHovering && css(hoverStyles)}
+
&:focus-within {
- transform: none;
- box-shadow: ${(props: ContainerProps) =>
- props.$collapsed
- ? "rgba(0, 0, 0, 0.2) 1px 0 4px"
- : props.$isSmallerThanMinimum
- ? "rgba(0, 0, 0, 0.1) inset -1px 0 2px"
- : "none"};
+ ${hoverStyles}
- ${Positioner} {
- display: block;
- }
-
- ${ToggleButton} {
+ & > div {
opacity: 1;
- }
- }
-
- &:not(:hover):not(:focus-within) > div {
- opacity: ${(props: ContainerProps) => (props.$collapsed ? "0" : "1")};
- transition: opacity 100ms ease-in-out;
+ }
}
`};
`;
diff --git a/app/components/Sidebar/components/FullWidthButton.tsx b/app/components/Sidebar/components/SidebarButton.tsx
similarity index 54%
rename from app/components/Sidebar/components/FullWidthButton.tsx
rename to app/components/Sidebar/components/SidebarButton.tsx
index 493f71ff7..e06a91e58 100644
--- a/app/components/Sidebar/components/FullWidthButton.tsx
+++ b/app/components/Sidebar/components/SidebarButton.tsx
@@ -1,64 +1,62 @@
-import { ExpandedIcon, MoreIcon } from "outline-icons";
+import { MoreIcon } from "outline-icons";
import * as React from "react";
import styled from "styled-components";
import { s } from "@shared/styles";
import Flex from "~/components/Flex";
+import Text from "~/components/Text";
import { draggableOnDesktop, undraggableOnDesktop } from "~/styles";
import Desktop from "~/utils/Desktop";
-export type FullWidthButtonProps = React.ComponentProps & {
+export type SidebarButtonProps = React.ComponentProps & {
position: "top" | "bottom";
title: React.ReactNode;
image: React.ReactNode;
minHeight?: number;
rounded?: boolean;
- showDisclosure?: boolean;
showMoreMenu?: boolean;
onClick: React.MouseEventHandler;
children?: React.ReactNode;
};
-const FullWidthButton = React.forwardRef<
- HTMLButtonElement,
- FullWidthButtonProps
->(function _FullWidthButton(
- {
- position = "top",
- showDisclosure,
- showMoreMenu,
- image,
- title,
- minHeight = 0,
- children,
- ...rest
- }: FullWidthButtonProps,
- ref
-) {
- return (
-
-
- {children}
-
- );
-});
+
+ {children}
+
+ );
+ }
+);
const Container = styled(Flex)<{ $position: "top" | "bottom" }>`
padding-top: ${(props) =>
@@ -67,7 +65,6 @@ const Container = styled(Flex)<{ $position: "top" | "bottom" }>`
`;
const Title = styled(Flex)`
- color: ${s("text")};
flex-shrink: 1;
flex-grow: 1;
text-overflow: ellipsis;
@@ -75,19 +72,22 @@ const Title = styled(Flex)`
overflow: hidden;
`;
-const Button = styled(Flex)<{ minHeight: number }>`
+const Button = styled(Flex)<{
+ $minHeight: number;
+ $position: "top" | "bottom";
+}>`
flex: 1;
color: ${s("textTertiary")};
align-items: center;
- padding: 8px 4px;
+ padding: 4px;
font-size: 15px;
font-weight: 500;
border-radius: 4px;
- margin: 8px 0;
border: 0;
+ margin: ${(props) => (props.$position === "top" ? 16 : 8)}px 0;
background: none;
flex-shrink: 0;
- min-height: ${(props) => props.minHeight}px;
+ min-height: ${(props) => props.$minHeight}px;
-webkit-appearance: none;
text-decoration: none;
@@ -114,4 +114,4 @@ const Button = styled(Flex)<{ minHeight: number }>`
}
`;
-export default FullWidthButton;
+export default SidebarButton;
diff --git a/app/components/Sidebar/components/Toggle.tsx b/app/components/Sidebar/components/Toggle.tsx
deleted file mode 100644
index c971a7ae1..000000000
--- a/app/components/Sidebar/components/Toggle.tsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import * as React from "react";
-import { useTranslation } from "react-i18next";
-import styled, { css } from "styled-components";
-import breakpoint from "styled-components-breakpoint";
-import { s } from "@shared/styles";
-import Arrow from "~/components/Arrow";
-import useEventListener from "~/hooks/useEventListener";
-
-type Props = {
- direction: "left" | "right";
- style?: React.CSSProperties;
- onClick?: React.MouseEventHandler;
-};
-
-const Toggle = React.forwardRef(function Toggle_(
- { direction = "left", onClick, style }: Props,
- ref
-) {
- const { t } = useTranslation();
- const [hovering, setHovering] = React.useState(false);
- const positionRef = React.useRef(null);
-
- // Not using CSS hover here so that we can disable pointer events on this
- // div and allow click through to the editor elements behind.
- useEventListener("mousemove", (event: MouseEvent) => {
- if (!positionRef.current) {
- return;
- }
-
- const bound = positionRef.current.getBoundingClientRect();
- const withinBounds =
- event.clientX >= bound.left && event.clientX <= bound.right;
- if (withinBounds !== hovering) {
- setHovering(withinBounds);
- }
- });
-
- return (
-
-
-
-
-
- );
-});
-
-export const ToggleButton = styled.button<{ $direction?: "left" | "right" }>`
- opacity: 0;
- background: none;
- transition: opacity 100ms ease-in-out;
- transform: translateY(-50%)
- scaleX(${(props) => (props.$direction === "left" ? 1 : -1)});
- position: fixed;
- top: 50vh;
- padding: 8px;
- border: 0;
- pointer-events: none;
- color: ${s("divider")};
-
- &:active {
- color: ${s("sidebarText")};
- }
-
- ${breakpoint("tablet")`
- pointer-events: all;
- cursor: var(--pointer);
- `}
-
- @media (hover: none) {
- opacity: 1;
- }
-`;
-
-export const Positioner = styled.div<{ $hovering: boolean }>`
- display: none;
- z-index: 2;
- position: absolute;
- top: 0;
- bottom: 0;
- right: -30px;
- width: 30px;
- pointer-events: none;
-
- &:focus-within ${ToggleButton} {
- opacity: 1;
- }
-
- ${(props) =>
- props.$hovering &&
- css`
- ${ToggleButton} {
- opacity: 1;
- }
- `}
-
- ${breakpoint("tablet")`
- display: block;
- `}
-`;
-
-export default Toggle;
diff --git a/app/components/Sidebar/components/ToggleButton.tsx b/app/components/Sidebar/components/ToggleButton.tsx
new file mode 100644
index 000000000..03fe0d689
--- /dev/null
+++ b/app/components/Sidebar/components/ToggleButton.tsx
@@ -0,0 +1,15 @@
+import styled from "styled-components";
+import { hover } from "~/styles";
+import SidebarButton from "./SidebarButton";
+
+const ToggleButton = styled(SidebarButton)`
+ opacity: 0;
+ transition: opacity 100ms ease-in-out;
+
+ &:${hover},
+ &:active {
+ opacity: 1;
+ }
+`;
+
+export default ToggleButton;
diff --git a/app/components/TeamLogo.ts b/app/components/TeamLogo.ts
index e799353a8..3c51c32dd 100644
--- a/app/components/TeamLogo.ts
+++ b/app/components/TeamLogo.ts
@@ -4,7 +4,8 @@ import Avatar from "./Avatar";
const TeamLogo = styled(Avatar)`
border-radius: 4px;
- border: 1px solid ${s("divider")};
+ box-shadow: inset 0 0 0 1px ${s("divider")};
+ border: 0;
`;
export default TeamLogo;
diff --git a/package.json b/package.json
index 404f869e4..a849f50e5 100644
--- a/package.json
+++ b/package.json
@@ -142,7 +142,7 @@
"natural-sort": "^1.0.0",
"node-fetch": "2.6.12",
"nodemailer": "^6.9.4",
- "outline-icons": "^2.3.0",
+ "outline-icons": "^2.4.0",
"oy-vey": "^0.12.0",
"passport": "^0.6.0",
"passport-google-oauth2": "^0.2.0",
diff --git a/yarn.lock b/yarn.lock
index d8bda6342..b2b9e66e1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5639,15 +5639,7 @@ define-lazy-prop@^2.0.0:
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
-define-properties@^1.1.3, define-properties@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
- integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
- dependencies:
- has-property-descriptors "^1.0.0"
- object-keys "^1.1.1"
-
-define-properties@^1.2.0:
+define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
@@ -6117,46 +6109,7 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.17.4, es-abstract@^1.18.0, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2, es-abstract@^1.19.0, es-abstract@^1.20.4:
- version "1.21.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6"
- integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-set-tostringtag "^2.0.1"
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- function.prototype.name "^1.1.5"
- get-intrinsic "^1.1.3"
- get-symbol-description "^1.0.0"
- globalthis "^1.0.3"
- gopd "^1.0.1"
- has "^1.0.3"
- has-property-descriptors "^1.0.0"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
- internal-slot "^1.0.4"
- is-array-buffer "^3.0.1"
- is-callable "^1.2.7"
- is-negative-zero "^2.0.2"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.2"
- is-string "^1.0.7"
- is-typed-array "^1.1.10"
- is-weakref "^1.0.2"
- object-inspect "^1.12.2"
- object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.4.3"
- safe-regex-test "^1.0.0"
- string.prototype.trimend "^1.0.6"
- string.prototype.trimstart "^1.0.6"
- typed-array-length "^1.0.4"
- unbox-primitive "^1.0.2"
- which-typed-array "^1.1.9"
-
-es-abstract@^1.21.2, es-abstract@^1.22.1:
+es-abstract@^1.17.4, es-abstract@^1.18.0, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2, es-abstract@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc"
integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==
@@ -7140,12 +7093,7 @@ function.prototype.name@^1.1.2, function.prototype.name@^1.1.5:
es-abstract "^1.19.0"
functions-have-names "^1.2.2"
-functions-have-names@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21"
- integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==
-
-functions-have-names@^1.2.3:
+functions-have-names@^1.2.2, functions-have-names@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
@@ -7170,16 +7118,7 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
- integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.3"
-
-get-intrinsic@^1.2.1:
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
@@ -7951,16 +7890,7 @@ is-arguments@^1.0.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-array-buffer@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a"
- integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.3"
- is-typed-array "^1.1.10"
-
-is-array-buffer@^3.0.2:
+is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
@@ -10218,10 +10148,10 @@ os-tmpdir@~1.0.2:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
-outline-icons@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/outline-icons/-/outline-icons-2.3.0.tgz#f1a5910b77c1167ffa466951f4a3bcca182c3a8d"
- integrity sha512-DpTLh1YuflJ4+aO0U9DutbMJX86uIsG0rk0ONRxTtIbDIXZrkMXQ9pynssnI5FT9ZdQeNBx7AQjHOSRmxzT3HQ==
+outline-icons@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/outline-icons/-/outline-icons-2.4.0.tgz#820b4585ebcd4db789077574b918436cdb26d30b"
+ integrity sha512-CdtyRrfwXPJWEALqpL01EbeHAR7XXwqUSSQV7+SK8u+2y1nzyYTZ6DD8dB0ledxRHI3+ErTFKcKrQK41hOxh9w==
oy-vey@^0.12.0:
version "0.12.0"
@@ -11509,16 +11439,7 @@ regenerator-transform@^0.15.2:
dependencies:
"@babel/runtime" "^7.8.4"
-regexp.prototype.flags@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
- integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- functions-have-names "^1.2.2"
-
-regexp.prototype.flags@^1.5.0:
+regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
@@ -11661,16 +11582,7 @@ resolve.exports@^2.0.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e"
integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==
-resolve@^1.1.6, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1:
- version "1.22.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
- integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
- dependencies:
- is-core-module "^2.9.0"
- path-parse "^1.0.7"
- supports-preserve-symlinks-flag "^1.0.0"
-
-resolve@^1.22.4:
+resolve@^1.1.6, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4:
version "1.22.4"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==
@@ -12406,16 +12318,7 @@ string.prototype.matchall@^4.0.2, string.prototype.matchall@^4.0.6:
regexp.prototype.flags "^1.4.3"
side-channel "^1.0.4"
-string.prototype.trim@^1.2.1:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz#6014689baf5efaf106ad031a5fa45157666ed1bd"
- integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.2"
-
-string.prototype.trim@^1.2.7:
+string.prototype.trim@^1.2.1, string.prototype.trim@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533"
integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==
@@ -13570,7 +13473,7 @@ which-boxed-primitive@^1.0.2:
is-string "^1.0.5"
is-symbol "^1.0.3"
-which-typed-array@^1.1.10:
+which-typed-array@^1.1.10, which-typed-array@^1.1.2, which-typed-array@^1.1.9:
version "1.1.11"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==
@@ -13581,18 +13484,6 @@ which-typed-array@^1.1.10:
gopd "^1.0.1"
has-tostringtag "^1.0.0"
-which-typed-array@^1.1.2, which-typed-array@^1.1.9:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
- integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-tostringtag "^1.0.0"
- is-typed-array "^1.1.10"
-
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"