Skip to content

Commit eb98d7e

Browse files
Merge pull request #211 from gridaco/playground
Visual Testing, QA, Community Beta
2 parents 7ffc9d6 + 6cc78b3 commit eb98d7e

120 files changed

Lines changed: 37002 additions & 403 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.vscode/settings.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,9 @@
1313
"**/*.code-search": true,
1414
"**/yarn.lock": true,
1515
"**/.next": true
16-
}
16+
},
17+
"[python]": {
18+
"editor.defaultFormatter": "ms-python.autopep8"
19+
},
20+
"python.formatting.provider": "none"
1721
}

cli/jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
1+
/** @type {import('ts-jest').JestConfigWithTsJest} */
22
module.exports = {
33
preset: "ts-jest",
44
testEnvironment: "node",

data/figma-archives/dev/meta.json

Lines changed: 202 additions & 0 deletions
Large diffs are not rendered by default.

data/figma-archives/prod/meta.json

Lines changed: 28620 additions & 0 deletions
Large diffs are not rendered by default.

docs/css-multiple-background.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,43 @@ revision: 1
1212
- one or more gradient fill above solid fill
1313
- one or more image fill
1414

15+
## Related CSS Properties & Functions
16+
17+
**[color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) & [gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/gradient)**
18+
19+
- [background-color](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color)
20+
- [background](https://developer.mozilla.org/en-US/docs/Web/CSS/background)
21+
- [linear-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient)
22+
- [radial-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/radial-gradient)
23+
- [repeating-linear-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/repeating-linear-gradient)
24+
- [repeating-radial-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/repeating-radial-gradient)
25+
- [conic-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/conic-gradient)
26+
- [repeating-conic-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/repeating-conic-gradient)
27+
- [url](https://developer.mozilla.org/en-US/docs/Web/CSS/url)
28+
- element() (not supported yet)
29+
- [image](https://developer.mozilla.org/en-US/docs/Web/CSS/image/image)
30+
31+
**[image](https://developer.mozilla.org/en-US/docs/Web/CSS/image)**
32+
33+
- [background-image](https://developer.mozilla.org/en-US/docs/Web/CSS/background-image)
34+
- [background](https://developer.mozilla.org/en-US/docs/Web/CSS/background)
35+
- [background-repeat](https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat)
36+
- [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)
37+
- [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position)
38+
- [background-size](https://developer.mozilla.org/en-US/docs/Web/CSS/background-size)
39+
- [background-clip](https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip)
40+
- [background-origin](https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin)
41+
42+
## Design considerations
43+
44+
What we've considered while building multiple background support for css
45+
46+
- Multiple mixed types - `<color>`, `<gradient>`, and `<image>` - How should we handle them?
47+
- Multiple types with inconsistent transforms - `object-fit`, `object-position`, `background-size`, `background-clip`, `background-origin`
48+
- When to use baked image and when not to.
49+
- If there are multiple background values with mixed types and inconsistent transforms, it is often better to use baked image for cleaner code, and it's very probable that the box itself works as a artwork
50+
- When to use baked image as `src` attribute (`<img src="">`) or `background` property
51+
1552
## Possible combinations
1653

1754
single solid fill
@@ -58,3 +95,45 @@ no solid fill with multiple gradient fill
5895
background: linear-gradient(to bottom, #fff, #fff), linear-gradient(to bottom, #fff, #fff);
5996
}
6097
```
98+
99+
multiple images with different transforms
100+
101+
Using array syntax
102+
103+
```css
104+
._1 {
105+
background-image: url("image1.jpg"), url("image2.jpg");
106+
background-position: right bottom, left top;
107+
background-size: 50% 50%, auto;
108+
}
109+
```
110+
111+
Using pseudo elements - This is useful when there are less than 3 images - main, overlay, background
112+
113+
```css
114+
._1::before,
115+
div::after {
116+
content: "";
117+
position: absolute;
118+
top: 0;
119+
left: 0;
120+
width: 100%;
121+
height: 100%;
122+
}
123+
._1::before {
124+
background: url("image1.jpg") no-repeat;
125+
background-size: cover;
126+
transform: rotate(45deg);
127+
clip-path: circle(50% at 50% 50%);
128+
}
129+
130+
._1::after {
131+
background: url("image2.jpg") no-repeat;
132+
background-size: cover;
133+
transform: scale(0.5);
134+
}
135+
```
136+
137+
## Image resources management on SSG frameworks
138+
139+
- Next.js (Docs not ready)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/** @type {import('ts-jest').JestConfigWithTsJest} */
12
module.exports = {
23
preset: "ts-jest",
34
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/** @type {import('ts-jest').JestConfigWithTsJest} */
12
module.exports = {
23
preset: "ts-jest",
34
};

editor-packages/editor-dashboard/scaffold/editor-dashboard.tsx

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import {
2626
SceneItem,
2727
} from "../core";
2828
import Selecto from "react-selecto";
29+
import { openInFigma } from "@code-editor/external-links";
30+
import toast from "react-hot-toast";
2931

3032
export function Dashboard() {
3133
const {
@@ -329,6 +331,16 @@ function DashboardItemCard(
329331
}
330332
}
331333

334+
const scene_card_context_menu_items = [
335+
{ title: "View on Canvas", value: "focus" },
336+
{ title: "View Details", value: "isolate" },
337+
// { title: "Open in Diff View", value: "diff" },
338+
{ title: "Open in Figma", value: "open-in-figma" },
339+
] as const;
340+
341+
type TSceneCardContextMenuKey =
342+
typeof scene_card_context_menu_items[number]["value"];
343+
332344
function SceneCard(
333345
props: SceneItem & Omit<DashboardItemCardProps, "label" | "preview" | "icon">
334346
) {
@@ -368,29 +380,41 @@ function SceneCard(
368380
style: { opacity },
369381
};
370382

371-
const items: MenuItem<string>[] = [
372-
{ title: "View on Canvas", value: "focus" },
373-
{ title: "View Details", value: "isolate" },
374-
{ title: "Open in Figma", value: "open-in-figma" },
375-
];
376-
377383
const onContextSelect = useCallback(
378-
(value: string) => {
384+
(value: TSceneCardContextMenuKey) => {
379385
switch (value) {
380386
case "focus": {
381387
focusNodeOnCanvas(props.scene.id);
382388
break;
383389
}
384390
case "isolate": {
385391
isolateNode(props.scene.id);
392+
break;
393+
}
394+
case "open-in-figma": {
395+
if (typeof props.scene.filekey === "string") {
396+
openInFigma(props.scene.filekey, props.scene.id);
397+
} else {
398+
toast("This file can't be opened in Figma.");
399+
}
400+
break;
401+
}
402+
// case "diff": {
403+
// // todo
404+
// }
405+
default: {
406+
throw new Error(`Unknown context menu item ${value}`);
386407
}
387408
}
388409
},
389410
[focusNodeOnCanvas, isolateNode, props.scene.id]
390411
);
391412

392413
return (
393-
<ContextMenu items={items} onSelect={onContextSelect}>
414+
<ContextMenu
415+
items={scene_card_context_menu_items}
416+
onSelect={onContextSelect}
417+
>
394418
<div>
395419
<_SceneCard
396420
// @ts-ignore
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./open-in-figma";
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export function openInFigma(filekey: string, node?: string) {
2+
open(
3+
`https://www.figma.com/file/${filekey}${node ? `?node-id=${node}` : ""}`
4+
);
5+
}

0 commit comments

Comments
 (0)