mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-09 05:26:24 +09:00
Merge branch 'main' into remove-vercel-workarounds
This commit is contained in:
23 files changed
+220
-249
No files matched your search
@@ -101,6 +101,12 @@ const SidePanel = ({
|
||||
bc: "$loContrast",
|
||||
height: "100%",
|
||||
...css,
|
||||
"&:first-of-type": {
|
||||
boxShadow: "inset -1px 0 0 0 $colors$gray7",
|
||||
},
|
||||
"&:last-of-type": {
|
||||
boxShadow: "inset 1px 0 0 0 $colors$gray7",
|
||||
},
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
@@ -108,7 +114,7 @@ const SidePanel = ({
|
||||
);
|
||||
};
|
||||
|
||||
const Main = ({ children }: { children: Array<JSX.Element> }) => (
|
||||
const Main = ({ children }: { children: JSX.Element | Array<JSX.Element> }) => (
|
||||
<Flex
|
||||
as="main"
|
||||
direction="column"
|
||||
@@ -130,18 +136,20 @@ const ChromeWrapper = ({ children, isPreviewMode }: ChromeWrapperProps) => {
|
||||
const gridLayout = isPreviewMode
|
||||
? {
|
||||
gridTemplateColumns: "auto 1fr",
|
||||
gridTemplateRows: "auto 1fr",
|
||||
gridTemplateRows: "auto 1fr auto",
|
||||
gridTemplateAreas: `
|
||||
"header header"
|
||||
"sidebar main"
|
||||
"footer footer"
|
||||
`,
|
||||
}
|
||||
: {
|
||||
gridTemplateColumns: "auto 1fr 240px",
|
||||
gridTemplateRows: "auto 1fr",
|
||||
gridTemplateRows: "auto 1fr auto",
|
||||
gridTemplateAreas: `
|
||||
"header header header"
|
||||
"sidebar main inspector"
|
||||
"footer footer footer"
|
||||
`,
|
||||
};
|
||||
return (
|
||||
@@ -188,9 +196,6 @@ export const Designer = ({ config, project }: DesignerProps) => {
|
||||
return (
|
||||
<DndProvider backend={HTML5Backend}>
|
||||
<ChromeWrapper isPreviewMode={isPreviewMode}>
|
||||
<SidePanel gridArea="sidebar" isPreviewMode={isPreviewMode}>
|
||||
<SidebarLeft onDragChange={setIsDragging} publish={publish} />
|
||||
</SidePanel>
|
||||
<Topbar
|
||||
css={{ gridArea: "header" }}
|
||||
config={config}
|
||||
@@ -210,8 +215,10 @@ export const Designer = ({ config, project }: DesignerProps) => {
|
||||
}}
|
||||
/>
|
||||
</Workspace>
|
||||
<Breadcrumbs publish={publish} />
|
||||
</Main>
|
||||
<SidePanel gridArea="sidebar" isPreviewMode={isPreviewMode}>
|
||||
<SidebarLeft onDragChange={setIsDragging} publish={publish} />
|
||||
</SidePanel>
|
||||
<SidePanel
|
||||
gridArea="inspector"
|
||||
isPreviewMode={isPreviewMode}
|
||||
@@ -219,6 +226,7 @@ export const Designer = ({ config, project }: DesignerProps) => {
|
||||
>
|
||||
{isDragging ? <TreePrevew /> : <Inspector publish={publish} />}
|
||||
</SidePanel>
|
||||
<Breadcrumbs publish={publish} />
|
||||
</ChromeWrapper>
|
||||
</DndProvider>
|
||||
);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ChevronRightIcon } from "~/shared/icons";
|
||||
import { Button, Flex, Text } from "~/shared/design-system";
|
||||
import { Button, Flex, Text, darkTheme } from "~/shared/design-system";
|
||||
import { useSelectedInstancePath } from "../../shared/instance/use-selected-instance-path";
|
||||
import { type Publish, type Instance } from "@webstudio-is/sdk";
|
||||
import { useSelectedInstanceData } from "~/designer/shared/nano-states";
|
||||
@@ -11,20 +11,29 @@ type BreadcrumbProps = {
|
||||
|
||||
const Breadcrumb = ({ component, onClick }: BreadcrumbProps) => {
|
||||
return (
|
||||
<Flex align="center">
|
||||
<Button ghost css={{ color: "$loContrast", px: 0 }} onClick={onClick}>
|
||||
<Flex
|
||||
align="center"
|
||||
css={{
|
||||
// @todo: this could be on the button itself, right?
|
||||
"& button": {
|
||||
color: "$hiContrast",
|
||||
px: "0",
|
||||
},
|
||||
// @todo: and this on the svg, e.g. styled(Chevron...)(style)
|
||||
"& path": {
|
||||
fill: "$hiContrast",
|
||||
},
|
||||
}}
|
||||
>
|
||||
<Button ghost onClick={onClick}>
|
||||
{component}
|
||||
</Button>{" "}
|
||||
</Button>
|
||||
<ChevronRightIcon />
|
||||
</Flex>
|
||||
);
|
||||
};
|
||||
|
||||
const EmptyState = () => (
|
||||
<Text variant="loContrast" size="1">
|
||||
No instance selected
|
||||
</Text>
|
||||
);
|
||||
const EmptyState = () => <Text size="1">No instance selected</Text>;
|
||||
|
||||
type BreadcrumbsProps = {
|
||||
publish: Publish;
|
||||
@@ -36,9 +45,18 @@ export const Breadcrumbs = ({ publish }: BreadcrumbsProps) => {
|
||||
);
|
||||
return (
|
||||
<Flex
|
||||
className={darkTheme}
|
||||
as="footer"
|
||||
align="center"
|
||||
css={{ height: "$5", background: "$hiContrast", padding: "$1" }}
|
||||
css={{
|
||||
gridArea: "footer",
|
||||
height: "$5",
|
||||
background: "$loContrast",
|
||||
padding: "$2",
|
||||
"[data-theme=dark] &": {
|
||||
boxShadow: "inset 0 1px 0 0 $colors$gray7",
|
||||
},
|
||||
}}
|
||||
>
|
||||
{selectedInstancePath.length === 0 ? (
|
||||
<EmptyState />
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { Publish } from "@webstudio-is/sdk";
|
||||
import {
|
||||
Text,
|
||||
Tabs,
|
||||
TabsList,
|
||||
TabsTrigger,
|
||||
@@ -10,7 +11,6 @@ import {
|
||||
} from "~/shared/design-system";
|
||||
import { StylePanel } from "~/designer/features/style-panel";
|
||||
import { PropsPanel } from "~/designer/features/props-panel";
|
||||
import { BrushIcon, GearIcon } from "~/shared/icons";
|
||||
import { useSelectedInstanceData } from "~/designer/shared/nano-states";
|
||||
|
||||
type InspectorProps = {
|
||||
@@ -29,6 +29,7 @@ export const Inspector = ({ publish }: InspectorProps) => {
|
||||
if (selectedInstanceData === undefined) {
|
||||
return (
|
||||
<Box css={{ p: "$2" }}>
|
||||
{/* @todo: use this space for something more usefull: a-la figma's no instance selected sate, maybe create an issue with a more specific proposal? */}
|
||||
<Card css={{ p: "$3", mt: "$3" }}>
|
||||
<Paragraph>Select an instance on the canvas</Paragraph>
|
||||
</Card>
|
||||
@@ -37,13 +38,18 @@ export const Inspector = ({ publish }: InspectorProps) => {
|
||||
}
|
||||
|
||||
return (
|
||||
<Tabs defaultValue="style" css={{ width: "100%", gap: "$2" }}>
|
||||
// @todo: Nit: I wonder if this width was supposed to be defined by the parent container layout
|
||||
<Tabs defaultValue="style" css={{ width: "100%" }}>
|
||||
<TabsList>
|
||||
<TabsTrigger value="style">
|
||||
<BrushIcon />
|
||||
<Text>Style</Text>
|
||||
</TabsTrigger>
|
||||
{/* @note: events would be part of props */}
|
||||
<TabsTrigger value="props">
|
||||
<GearIcon />
|
||||
<Text>Props</Text>
|
||||
</TabsTrigger>
|
||||
<TabsTrigger value="inspect">
|
||||
<Text>Inspect</Text>
|
||||
</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="style" css={contentStyle}>
|
||||
|
||||
@@ -17,7 +17,8 @@ const sidebarTabsContentStyle = {
|
||||
width: 250,
|
||||
height: "100%",
|
||||
bc: "$loContrast",
|
||||
outline: "1px solid $slate6",
|
||||
// @todo: focus state should be same as hover/active state: hover and focus yes, probably same, active? not so sure.
|
||||
outline: "none",
|
||||
};
|
||||
|
||||
const none = { TabContent: () => null };
|
||||
|
||||
@@ -44,7 +44,15 @@ export const Search = ({ onSearch }: SearchProps) => {
|
||||
>
|
||||
<TextField
|
||||
value={search}
|
||||
css={{ paddingRight: "$5" }}
|
||||
css={{
|
||||
padding: "$2",
|
||||
boxShadow: "0 0 0 1px $colors$slate7",
|
||||
bc: "$colors$slate3",
|
||||
"&:focus": {
|
||||
bc: "$colors$slate1",
|
||||
boxShadow: "0 0 0 2px $colors$blue10",
|
||||
},
|
||||
}}
|
||||
placeholder="Search property or value"
|
||||
onChange={(event) => {
|
||||
const { value } = event.target;
|
||||
@@ -56,6 +64,11 @@ export const Search = ({ onSearch }: SearchProps) => {
|
||||
type="reset"
|
||||
aria-label="Reset search"
|
||||
className={resetStyle()}
|
||||
css={{
|
||||
// @todo: feels wrong to use transform for this, would setting width/height on the icon directly be a better approach?
|
||||
transform: "scale(.75)",
|
||||
"&:disabled path": { fill: "none" },
|
||||
}}
|
||||
>
|
||||
<Cross1Icon />
|
||||
</IconButton>
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
type Category,
|
||||
type Style,
|
||||
} from "@webstudio-is/sdk";
|
||||
import { Box, Flex, Collapsible, Button } from "~/shared/design-system";
|
||||
import { Flex, Collapsible, Button } from "~/shared/design-system";
|
||||
import { TriangleRightIcon, TriangleDownIcon } from "~/shared/icons";
|
||||
import { styleConfigs, type StyleConfig } from "~/shared/style-panel-configs";
|
||||
import { CollapsibleSection } from "~/designer/shared/inspector";
|
||||
@@ -160,5 +160,5 @@ export const VisualSettings = ({
|
||||
</CollapsibleSection>
|
||||
);
|
||||
}
|
||||
return <Box css={{ overflow: "auto" }}>{all}</Box>;
|
||||
return <>{all}</>;
|
||||
};
|
||||
@@ -3,7 +3,6 @@ import { willRender } from "~/designer/shared/breakpoints";
|
||||
import { Box, Card, Paragraph } from "~/shared/design-system";
|
||||
import type { SelectedInstanceData } from "~/shared/canvas-components";
|
||||
import { useStyleData } from "./use-style-data";
|
||||
import { ComponentInfo } from "../../shared/inspector";
|
||||
import { VisualSettings } from "./settings";
|
||||
import { Search } from "./search";
|
||||
import { useState } from "react";
|
||||
@@ -55,19 +54,21 @@ export const StylePanel = ({
|
||||
|
||||
return (
|
||||
<>
|
||||
<Box css={{ p: "$2" }}>
|
||||
{/* <Box css={{ py: "$3", px: "$3" }}>
|
||||
<ComponentInfo selectedInstanceData={selectedInstanceData} />
|
||||
</Box> */}
|
||||
<Box css={{ overflow: "auto" }}>
|
||||
<Box css={{ py: "$3", px: "$3", paddingTop: "$4" }}>
|
||||
<Search onSearch={setSearch} />
|
||||
</Box>
|
||||
<VisualSettings
|
||||
search={search}
|
||||
selectedInstanceData={selectedInstanceData}
|
||||
currentStyle={currentStyle}
|
||||
inheritedStyle={inheritedStyle}
|
||||
setProperty={setProperty}
|
||||
/>
|
||||
</Box>
|
||||
<Box css={{ p: "$2" }}>
|
||||
<Search onSearch={setSearch} />
|
||||
</Box>
|
||||
<VisualSettings
|
||||
search={search}
|
||||
selectedInstanceData={selectedInstanceData}
|
||||
currentStyle={currentStyle}
|
||||
inheritedStyle={inheritedStyle}
|
||||
setProperty={setProperty}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
DropdownMenuSeparator,
|
||||
IconButton,
|
||||
Text,
|
||||
Box,
|
||||
} from "~/shared/design-system";
|
||||
import { HamburgerMenuIcon } from "~/shared/icons";
|
||||
import type { Config } from "~/config";
|
||||
@@ -44,9 +45,23 @@ export const Menu = ({ config, publish }: MenuProps) => {
|
||||
return (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<IconButton aria-label="Menu Button">
|
||||
<HamburgerMenuIcon />
|
||||
</IconButton>
|
||||
<Box
|
||||
css={{
|
||||
width: "$sizes$7",
|
||||
height: "100%",
|
||||
borderRadius: "0",
|
||||
outline: "none",
|
||||
// @todo: would set directly on the element
|
||||
"& > button": {
|
||||
width: "inherit",
|
||||
height: "inherit",
|
||||
},
|
||||
}}
|
||||
>
|
||||
<IconButton aria-label="Menu Button">
|
||||
<HamburgerMenuIcon />
|
||||
</IconButton>
|
||||
</Box>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuItem
|
||||
|
||||
@@ -30,11 +30,12 @@ export const SyncStatus = () => {
|
||||
align="center"
|
||||
justify="center"
|
||||
css={{
|
||||
mx: "$1",
|
||||
width: iconSize,
|
||||
height: iconSize,
|
||||
backgroundColor: "$green9",
|
||||
borderRadius: "100%",
|
||||
"& > svg": {
|
||||
width: iconSize,
|
||||
height: iconSize,
|
||||
background: "$green9",
|
||||
borderRadius: "$radii$round",
|
||||
},
|
||||
}}
|
||||
>
|
||||
<AccessibleIcon label={`Sync status: ${status}`}>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Project, Publish } from "@webstudio-is/sdk";
|
||||
import { Flex, type CSS } from "~/shared/design-system";
|
||||
import { darkTheme, Flex, type CSS } from "~/shared/design-system";
|
||||
import type { Config } from "~/config";
|
||||
import { PreviewButton } from "./preview";
|
||||
import { ShareButton } from "./share";
|
||||
@@ -14,23 +14,44 @@ type TopbarProps = {
|
||||
project: Project;
|
||||
publish: Publish;
|
||||
};
|
||||
|
||||
export const Topbar = ({ config, css, project, publish }: TopbarProps) => {
|
||||
return (
|
||||
<Flex
|
||||
className={darkTheme}
|
||||
as="header"
|
||||
align="center"
|
||||
justify="between"
|
||||
css={{
|
||||
p: "$1",
|
||||
bc: "$loContrast",
|
||||
borderBottom: "1px solid $slate8",
|
||||
height: "$sizes$7",
|
||||
"[data-theme=dark] &": {
|
||||
boxShadow: "inset 0 -1px 0 0 $colors$gray7",
|
||||
},
|
||||
// @todo: uhh, setting this on any focused child element? lets see what's the use case and why its necessary to override vs. not having it in the first place
|
||||
"& :focus": {
|
||||
boxShadow: "none",
|
||||
},
|
||||
"& > *": {
|
||||
height: "100%",
|
||||
},
|
||||
"& button": {
|
||||
borderRadius: "0",
|
||||
},
|
||||
...css,
|
||||
}}
|
||||
>
|
||||
<Menu config={config} publish={publish} />
|
||||
<Breakpoints publish={publish} />
|
||||
<Flex gap="1" align="center">
|
||||
<Flex
|
||||
align="center"
|
||||
css={{
|
||||
"& > *": {
|
||||
height: "inherit",
|
||||
width: "auto",
|
||||
padding: "0 $2",
|
||||
},
|
||||
}}
|
||||
>
|
||||
<SyncStatus />
|
||||
<PreviewButton publish={publish} />
|
||||
<ShareButton path={config.previewPath} project={project} />
|
||||
|
||||
@@ -5,8 +5,9 @@ import { type Publish } from "@webstudio-is/sdk";
|
||||
|
||||
const workspaceStyle = {
|
||||
flexGrow: 1,
|
||||
background: "$gray8",
|
||||
overflow: "auto",
|
||||
background: "$gray3",
|
||||
// scroll behaviour should be derived from the iframe
|
||||
overflow: "hidden",
|
||||
scrollbarGutter: "stable",
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { createValueContainer, useValue } from "react-nano-state";
|
||||
import { Flex, Text, Collapsible } from "~/shared/design-system";
|
||||
import { TriangleRightIcon, TriangleDownIcon } from "~/shared/icons";
|
||||
import { Box, Flex, Text, Collapsible } from "~/shared/design-system";
|
||||
import { PlusIcon, MinusIcon } from "~/shared/icons";
|
||||
|
||||
type CollapsibleSectionProps = {
|
||||
label: string;
|
||||
@@ -36,34 +36,46 @@ export const CollapsibleSection = ({
|
||||
const isOpenFinal = isOpen === undefined ? isOpenByUser : isOpen;
|
||||
return (
|
||||
<Collapsible.Root open={isOpenFinal} onOpenChange={setIsOpenByUser}>
|
||||
<Collapsible.Trigger asChild>
|
||||
<Flex
|
||||
align="center"
|
||||
gap="1"
|
||||
justify="between"
|
||||
css={{
|
||||
py: "$3",
|
||||
px: "$1",
|
||||
color: "$hiContrast",
|
||||
cursor: "default",
|
||||
}}
|
||||
>
|
||||
{isOpenFinal ? <TriangleDownIcon /> : <TriangleRightIcon />}
|
||||
<Text size="3" css={{ flexGrow: 1 }}>
|
||||
{label}
|
||||
</Text>
|
||||
{rightSlot}
|
||||
</Flex>
|
||||
</Collapsible.Trigger>
|
||||
<Collapsible.Content asChild>
|
||||
<Flex
|
||||
gap="3"
|
||||
direction="column"
|
||||
css={{ p: "$2", borderBottom: "1px solid $slate6" }}
|
||||
>
|
||||
{children}
|
||||
</Flex>
|
||||
</Collapsible.Content>
|
||||
<Box
|
||||
css={{
|
||||
boxShadow: "0px 1px 0 $colors$gray6",
|
||||
}}
|
||||
>
|
||||
<Collapsible.Trigger asChild>
|
||||
<Flex
|
||||
align="center"
|
||||
gap="1"
|
||||
justify="between"
|
||||
css={{
|
||||
py: "$3",
|
||||
px: "$3",
|
||||
color: "$hiContrast",
|
||||
cursor: "default",
|
||||
}}
|
||||
>
|
||||
<Text size="1" css={{ fontWeight: "500", flexGrow: 1 }}>
|
||||
{label}
|
||||
</Text>
|
||||
{/* @todo: props panel shows double plus icon when rightSlot is set */}
|
||||
{isOpenFinal ? <MinusIcon /> : <PlusIcon />}
|
||||
{rightSlot}
|
||||
</Flex>
|
||||
</Collapsible.Trigger>
|
||||
<Collapsible.Content asChild>
|
||||
<Flex
|
||||
gap="3"
|
||||
direction="column"
|
||||
css={{
|
||||
p: "$3",
|
||||
"&:empty": {
|
||||
display: "none",
|
||||
},
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</Flex>
|
||||
</Collapsible.Content>
|
||||
</Box>
|
||||
</Collapsible.Root>
|
||||
);
|
||||
};
|
||||
@@ -9,9 +9,13 @@ export const ComponentInfo = ({
|
||||
}) => {
|
||||
return (
|
||||
<Flex justify="between" align="center">
|
||||
<Text>{`Selected: ${
|
||||
primitives[selectedInstanceData.component].label
|
||||
}`}</Text>
|
||||
<Text
|
||||
css={{
|
||||
fontSize: "$2",
|
||||
color: "$colors$slate11",
|
||||
fontWeight: "500",
|
||||
}}
|
||||
>{`Selected: ${primitives[selectedInstanceData.component].label}`}</Text>
|
||||
</Flex>
|
||||
);
|
||||
};
|
||||
@@ -40,7 +40,7 @@ export const Button = styled("button", {
|
||||
"1": {
|
||||
borderRadius: "$1",
|
||||
height: "$5",
|
||||
px: "$2",
|
||||
px: "$3",
|
||||
fontSize: "$1",
|
||||
lineHeight: "$sizes$5",
|
||||
},
|
||||
|
||||
@@ -12,7 +12,7 @@ export const SidebarTabs = styled(TabsPrimitive.Root, {
|
||||
export const SidebarTabsTrigger = styled(TabsPrimitive.Trigger, {
|
||||
flexShrink: 0,
|
||||
display: "flex",
|
||||
size: "$6",
|
||||
size: "$7",
|
||||
m: 0,
|
||||
userSelect: "none",
|
||||
outline: "none",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React from "react";
|
||||
import { styled, CSS } from "../stitches.config";
|
||||
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
||||
import { Text } from "./text";
|
||||
|
||||
export const Tabs = styled(TabsPrimitive.Root, {
|
||||
display: "flex",
|
||||
@@ -11,7 +12,7 @@ export const Tabs = styled(TabsPrimitive.Root, {
|
||||
|
||||
export const TabsTrigger = styled(TabsPrimitive.Trigger, {
|
||||
flexShrink: 0,
|
||||
size: "$6",
|
||||
height: "$7",
|
||||
display: "inline-flex",
|
||||
lineHeight: 1,
|
||||
fontFamily: "inherit",
|
||||
@@ -21,14 +22,17 @@ export const TabsTrigger = styled(TabsPrimitive.Trigger, {
|
||||
outline: "none",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
color: "$slate11",
|
||||
border: "none",
|
||||
borderBottom: "1px solid transparent",
|
||||
borderTopLeftRadius: "$2",
|
||||
borderTopRightRadius: "$2",
|
||||
zIndex: "10",
|
||||
backgroundColor: "transparent",
|
||||
|
||||
["&:first-child"]: {
|
||||
paddingLeft: "$3",
|
||||
},
|
||||
[`& > ${Text}`]: {
|
||||
color: "$gray9",
|
||||
fontSize: "11px",
|
||||
fontWeight: "600",
|
||||
},
|
||||
"@hover": {
|
||||
"&:hover": {
|
||||
color: "$hiContrast",
|
||||
@@ -36,33 +40,27 @@ export const TabsTrigger = styled(TabsPrimitive.Trigger, {
|
||||
},
|
||||
|
||||
'&[data-state="active"]': {
|
||||
color: "$hiContrast",
|
||||
borderColor: "$slate6",
|
||||
[`& > ${Text}`]: {
|
||||
color: "$hiContrast",
|
||||
},
|
||||
},
|
||||
|
||||
'&[data-orientation="vertical"]': {
|
||||
justifyContent: "flex-start",
|
||||
borderTopRightRadius: 0,
|
||||
borderBottomLeftRadius: "$2",
|
||||
borderBottomColor: "transparent",
|
||||
|
||||
'&[data-state="active"]': {
|
||||
borderBottomColor: "$slate6",
|
||||
borderRightColor: "transparent",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const StyledTabsList = styled(TabsPrimitive.List, {
|
||||
flexShrink: 0,
|
||||
display: "flex",
|
||||
borderBottom: "1px solid $colors$gray6",
|
||||
"&:focus": {
|
||||
outline: "none",
|
||||
boxShadow: "inset 0 0 0 1px $slate8, 0 0 0 1px $slate8",
|
||||
boxShadow: "inset 0 0 0 1px $gray8, 0 0 0 1px $gray8",
|
||||
},
|
||||
'&[data-orientation="vertical"]': {
|
||||
flexDirection: "column",
|
||||
boxShadow: "inset -1px 0 0 $slate6",
|
||||
boxShadow: "inset -1px 0 0 $gray6",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -84,7 +82,7 @@ export const TabsContent = styled(TabsPrimitive.Content, {
|
||||
flexGrow: 1,
|
||||
"&:focus": {
|
||||
outline: "none",
|
||||
boxShadow: "inset 0 0 0 1px $slate8, 0 0 0 1px $slate8",
|
||||
boxShadow: "inset 0 0 0 1px $gray8, 0 0 0 1px $gray8",
|
||||
},
|
||||
'&[data-state="inactive"]': {
|
||||
display: "none",
|
||||
|
||||
@@ -7,6 +7,7 @@ export const Text = styled("div", {
|
||||
fontWeight: 400,
|
||||
fontVariantNumeric: "tabular-nums",
|
||||
display: "block",
|
||||
userSelect: "none",
|
||||
|
||||
variants: {
|
||||
size: {
|
||||
|
||||
@@ -497,7 +497,8 @@ export const darkTheme = createTheme("dark-theme", {
|
||||
muted: "$slate8",
|
||||
primary: "$blue9",
|
||||
hiContrast: "$slate12",
|
||||
loContrast: "$slate1",
|
||||
// radix colors in this range are either too dark/too light, nothing gray/black in the 16-17% luminosity range
|
||||
loContrast: "hsl(0 0% 17%)",
|
||||
canvas: "hsl(0 0% 15%)",
|
||||
panel: "$slate3",
|
||||
transparentPanel: "hsl(0 100% 100% / 97%)",
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { Links, LiveReload, Meta, Outlet, Scripts } from "@remix-run/react";
|
||||
import { CriticalCss } from "@webstudio-is/sdk";
|
||||
import { darkTheme } from "~/shared/design-system";
|
||||
import { Env } from "~/shared/env";
|
||||
|
||||
export const Designer = () => {
|
||||
@@ -13,7 +12,7 @@ export const Designer = () => {
|
||||
<Links />
|
||||
<CriticalCss />
|
||||
</head>
|
||||
<body className={darkTheme}>
|
||||
<body>
|
||||
<Outlet />
|
||||
<Env />
|
||||
<Scripts />
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"description": "Webstudio Designer UI as a service",
|
||||
"scripts": {
|
||||
"build": "remix build",
|
||||
"dev": "npm-run-all --parallel storybook:run watch:remix",
|
||||
"dev": "remix dev",
|
||||
"start": "remix-serve build",
|
||||
"typecheck": "tsc -b",
|
||||
"lint": "eslint . --ext .ts,.tsx --max-warnings 0",
|
||||
@@ -13,7 +13,6 @@
|
||||
"checks": "yarn lint && yarn typecheck && yarn prettier --check && yarn test",
|
||||
"migrate": "prisma migrate dev",
|
||||
"generate": "prisma generate",
|
||||
"watch:remix": "remix dev",
|
||||
"watch:sdk": "relative-deps && relative-deps watch",
|
||||
"prettier": "prettier \"*.{js,md,json,ts}\" \"{docs,app}/**/*.{js,md,json,ts}\"",
|
||||
"storybook:run": "start-storybook -p 6006",
|
||||
|
||||
+3
-3
@@ -14,15 +14,15 @@
|
||||
"checks": "turbo run checks",
|
||||
"dev": "turbo run dev --parallel",
|
||||
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
|
||||
"prepare": "husky install"
|
||||
"prepare": "husky install",
|
||||
"storybook": "turbo run storybook:run"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-custom": "*",
|
||||
"husky": ">=6",
|
||||
"lint-staged": "^13.0.2",
|
||||
"prettier": "latest",
|
||||
"turbo": "latest",
|
||||
"yarn-run-all": "^3.1.1"
|
||||
"turbo": "latest"
|
||||
},
|
||||
"engines": {
|
||||
"npm": ">=7.0.0",
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
},
|
||||
"dev": {
|
||||
"cache": false
|
||||
},
|
||||
"storybook:run": {
|
||||
"cache": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4803,11 +4803,6 @@ ansi-regex@^6.0.1:
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
|
||||
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
||||
|
||||
ansi-styles@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
||||
integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
@@ -5814,17 +5809,6 @@ ccount@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
|
||||
integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
|
||||
|
||||
chalk@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||
integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==
|
||||
dependencies:
|
||||
ansi-styles "^2.2.1"
|
||||
escape-string-regexp "^1.0.2"
|
||||
has-ansi "^2.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
chalk@^2.0.0, chalk@^2.4.1:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||
@@ -6454,14 +6438,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
|
||||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
|
||||
cross-spawn@^4.0.0:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
|
||||
integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==
|
||||
dependencies:
|
||||
lru-cache "^4.0.1"
|
||||
which "^1.2.9"
|
||||
|
||||
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||
@@ -6993,11 +6969,6 @@ dotenv@^8.0.0:
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
||||
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
|
||||
|
||||
duplexer@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
|
||||
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
|
||||
|
||||
duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
|
||||
@@ -7622,7 +7593,7 @@ escape-html@~1.0.3:
|
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
|
||||
|
||||
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
||||
@@ -7898,19 +7869,6 @@ etag@~1.8.1:
|
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
|
||||
|
||||
event-stream@=3.3.4:
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
|
||||
integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==
|
||||
dependencies:
|
||||
duplexer "~0.1.1"
|
||||
from "~0"
|
||||
map-stream "~0.1.0"
|
||||
pause-stream "0.0.11"
|
||||
split "0.3"
|
||||
stream-combiner "~0.0.4"
|
||||
through "~2.3.1"
|
||||
|
||||
event-target-shim@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
|
||||
@@ -8483,11 +8441,6 @@ from2@^2.1.0:
|
||||
inherits "^2.0.1"
|
||||
readable-stream "^2.0.0"
|
||||
|
||||
from@~0:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
|
||||
integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
@@ -8865,13 +8818,6 @@ handlebars@^4.7.7:
|
||||
optionalDependencies:
|
||||
uglify-js "^3.1.4"
|
||||
|
||||
has-ansi@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
|
||||
integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
|
||||
@@ -10964,14 +10910,6 @@ lowlight@^1.17.0:
|
||||
fault "^1.0.0"
|
||||
highlight.js "~10.7.0"
|
||||
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
|
||||
dependencies:
|
||||
pseudomap "^1.0.2"
|
||||
yallist "^2.1.2"
|
||||
|
||||
lru-cache@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||
@@ -11052,11 +10990,6 @@ map-or-similar@^1.5.0:
|
||||
resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08"
|
||||
integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==
|
||||
|
||||
map-stream@~0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
|
||||
integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==
|
||||
|
||||
map-visit@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
|
||||
@@ -12655,13 +12588,6 @@ path-type@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||
|
||||
pause-stream@0.0.11:
|
||||
version "0.0.11"
|
||||
resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
|
||||
integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
|
||||
dependencies:
|
||||
through "~2.3"
|
||||
|
||||
pbkdf2@^3.0.3:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
|
||||
@@ -12725,7 +12651,7 @@ pify@^4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||
|
||||
pinkie-promise@^2.0.0, pinkie-promise@^2.0.1:
|
||||
pinkie-promise@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
||||
integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==
|
||||
@@ -13068,18 +12994,6 @@ prr@~1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
||||
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
|
||||
|
||||
ps-tree@^1.0.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
|
||||
integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
|
||||
dependencies:
|
||||
event-stream "=3.3.4"
|
||||
|
||||
pseudomap@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||
integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
|
||||
|
||||
psl@^1.1.33:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
|
||||
@@ -13511,7 +13425,7 @@ read-pkg-up@^7.0.1:
|
||||
read-pkg "^5.2.0"
|
||||
type-fest "^0.8.1"
|
||||
|
||||
read-pkg@^1.0.0, read-pkg@^1.1.0:
|
||||
read-pkg@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
|
||||
integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==
|
||||
@@ -14386,11 +14300,6 @@ shebang-regex@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
||||
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
||||
|
||||
shell-quote@^1.6.1:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
|
||||
integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
|
||||
|
||||
side-channel@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
|
||||
@@ -14600,13 +14509,6 @@ split-string@^3.0.1, split-string@^3.0.2:
|
||||
dependencies:
|
||||
extend-shallow "^3.0.0"
|
||||
|
||||
split@0.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
|
||||
integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==
|
||||
dependencies:
|
||||
through "2"
|
||||
|
||||
sprintf-js@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
@@ -14703,13 +14605,6 @@ stream-browserify@^2.0.1:
|
||||
inherits "~2.0.1"
|
||||
readable-stream "^2.0.2"
|
||||
|
||||
stream-combiner@~0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
|
||||
integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==
|
||||
dependencies:
|
||||
duplexer "~0.1.1"
|
||||
|
||||
stream-each@^1.1.0:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
|
||||
@@ -14951,11 +14846,6 @@ stylis@^4.0.6:
|
||||
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.1.tgz#e46c6a9bbf7c58db1e65bb730be157311ae1fe12"
|
||||
integrity sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ==
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
@@ -15174,7 +15064,7 @@ through2@^2.0.0, through2@^2.0.3:
|
||||
readable-stream "~2.3.6"
|
||||
xtend "~4.0.1"
|
||||
|
||||
through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.1:
|
||||
through@^2.3.6, through@^2.3.8:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
|
||||
@@ -16474,11 +16364,6 @@ y18n@^5.0.5:
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
|
||||
|
||||
yallist@^3.0.2:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
@@ -16550,22 +16435,6 @@ yarn-or-npm@^3.0.1:
|
||||
cross-spawn "^6.0.5"
|
||||
pkg-dir "^4.2.0"
|
||||
|
||||
yarn-run-all@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yarn-run-all/-/yarn-run-all-3.1.1.tgz#385053ee85c7156f87cec8949a0ffb6bfd0de0b0"
|
||||
integrity sha512-DgTb6H2VV/HNyeksmAnuR3CLHSTiHCIeuNYrc58NfL6ev8hcTRDXRbBO2yvl1OXLep94eofwXsxCZiaiRo8lDA==
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cross-spawn "^4.0.0"
|
||||
minimatch "^3.0.2"
|
||||
object-assign "^4.0.1"
|
||||
pinkie-promise "^2.0.1"
|
||||
ps-tree "^1.0.1"
|
||||
read-pkg "^1.1.0"
|
||||
read-pkg-up "^1.0.1"
|
||||
shell-quote "^1.6.1"
|
||||
string.prototype.padend "^3.0.0"
|
||||
|
||||
yn@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
|
||||
Reference in new issue
Block a user