mirror of
https://github.com/penpot/penpot.git
synced 2025-07-08 12:47:19 +02:00
✨ Are more visual regression tests for wasm (#6702)
This commit is contained in:
parent
8c6a80829f
commit
b92e108205
20 changed files with 6935 additions and 10 deletions
|
@ -64,7 +64,7 @@ export default defineConfig({
|
|||
snapshotPathTemplate: "{testDir}/{testFilePath}-snapshots/{arg}.png",
|
||||
expect: {
|
||||
toHaveScreenshot: {
|
||||
maxDiffPixelRatio: 0.005,
|
||||
maxDiffPixelRatio: 0.001,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
BIN
frontend/playwright/data/render-wasm/assets/ebgaramond.ttf
Normal file
BIN
frontend/playwright/data/render-wasm/assets/ebgaramond.ttf
Normal file
Binary file not shown.
BIN
frontend/playwright/data/render-wasm/assets/firacode.ttf
Normal file
BIN
frontend/playwright/data/render-wasm/assets/firacode.ttf
Normal file
Binary file not shown.
BIN
frontend/playwright/data/render-wasm/assets/mreaves.ttf
Normal file
BIN
frontend/playwright/data/render-wasm/assets/mreaves.ttf
Normal file
Binary file not shown.
Binary file not shown.
4595
frontend/playwright/data/render-wasm/get-file-blend-modes.json
Normal file
4595
frontend/playwright/data/render-wasm/get-file-blend-modes.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,633 @@
|
|||
{
|
||||
"~:features": {
|
||||
"~#set": [
|
||||
"fdata/path-data",
|
||||
"plugins/runtime",
|
||||
"design-tokens/v1",
|
||||
"variants/v1",
|
||||
"layout/grid",
|
||||
"styles/v2",
|
||||
"fdata/pointer-map",
|
||||
"fdata/objects-map",
|
||||
"render-wasm/v1",
|
||||
"components/v2",
|
||||
"fdata/shape-data-type"
|
||||
]
|
||||
},
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:permissions": {
|
||||
"~:type": "~:membership",
|
||||
"~:is-owner": true,
|
||||
"~:is-admin": true,
|
||||
"~:can-edit": true,
|
||||
"~:can-read": true,
|
||||
"~:is-logged": true
|
||||
},
|
||||
"~:has-media-trimmed": false,
|
||||
"~:comment-thread-seqn": 0,
|
||||
"~:name": "Multiple fills",
|
||||
"~:revn": 19,
|
||||
"~:modified-at": "~m1749564220299",
|
||||
"~:vern": 0,
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cd3a51c255",
|
||||
"~:is-shared": false,
|
||||
"~:migrations": {
|
||||
"~#ordered-set": [
|
||||
"legacy-2",
|
||||
"legacy-3",
|
||||
"legacy-5",
|
||||
"legacy-6",
|
||||
"legacy-7",
|
||||
"legacy-8",
|
||||
"legacy-9",
|
||||
"legacy-10",
|
||||
"legacy-11",
|
||||
"legacy-12",
|
||||
"legacy-13",
|
||||
"legacy-14",
|
||||
"legacy-16",
|
||||
"legacy-17",
|
||||
"legacy-18",
|
||||
"legacy-19",
|
||||
"legacy-25",
|
||||
"legacy-26",
|
||||
"legacy-27",
|
||||
"legacy-28",
|
||||
"legacy-29",
|
||||
"legacy-31",
|
||||
"legacy-32",
|
||||
"legacy-33",
|
||||
"legacy-34",
|
||||
"legacy-36",
|
||||
"legacy-37",
|
||||
"legacy-38",
|
||||
"legacy-39",
|
||||
"legacy-40",
|
||||
"legacy-41",
|
||||
"legacy-42",
|
||||
"legacy-43",
|
||||
"legacy-44",
|
||||
"legacy-45",
|
||||
"legacy-46",
|
||||
"legacy-47",
|
||||
"legacy-48",
|
||||
"legacy-49",
|
||||
"legacy-50",
|
||||
"legacy-51",
|
||||
"legacy-52",
|
||||
"legacy-53",
|
||||
"legacy-54",
|
||||
"legacy-55",
|
||||
"legacy-56",
|
||||
"legacy-57",
|
||||
"legacy-59",
|
||||
"legacy-62",
|
||||
"legacy-65",
|
||||
"legacy-66",
|
||||
"legacy-67",
|
||||
"0001-remove-tokens-from-groups",
|
||||
"0002-normalize-bool-content",
|
||||
"0002-clean-shape-interactions",
|
||||
"0003-fix-root-shape",
|
||||
"0003-convert-path-content",
|
||||
"0004-add-partial-text-touched-flags",
|
||||
"0005-deprecate-image-type",
|
||||
"0006-fix-old-texts-fills",
|
||||
"0004-clean-shadow-and-colors",
|
||||
"0007-clear-invalid-strokes-and-fills-v2",
|
||||
"0008-fix-library-colors-opacity",
|
||||
"0009-add-partial-text-touched-flags"
|
||||
]
|
||||
},
|
||||
"~:version": 67,
|
||||
"~:project-id": "~u53a7ff09-2228-81d3-8006-4b5ea964593b",
|
||||
"~:created-at": "~m1749564032332",
|
||||
"~:data": {
|
||||
"~:pages": [
|
||||
"~uc0939f58-37bc-805d-8006-51cd3a51c256"
|
||||
],
|
||||
"~:pages-index": {
|
||||
"~uc0939f58-37bc-805d-8006-51cd3a51c256": {
|
||||
"~:objects": {
|
||||
"~u00000000-0000-0000-0000-000000000000": {
|
||||
"~#shape": {
|
||||
"~:y": 0,
|
||||
"~:hide-fill-on-export": false,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:name": "Root Frame",
|
||||
"~:width": 0.01,
|
||||
"~:type": "~:frame",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.01
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.01
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 0,
|
||||
"~:proportion": 1.0,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 0,
|
||||
"~:y": 0,
|
||||
"~:width": 0.01,
|
||||
"~:height": 0.01,
|
||||
"~:x1": 0,
|
||||
"~:y1": 0,
|
||||
"~:x2": 0.01,
|
||||
"~:y2": 0.01
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#FFFFFF",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 0.01,
|
||||
"~:flip-y": null,
|
||||
"~:shapes": [
|
||||
"~ub688a894-3697-80d3-8006-51cd477981bc",
|
||||
"~ub688a894-3697-80d3-8006-51cd5504e381",
|
||||
"~ub688a894-3697-80d3-8006-51cd5de7c5f3",
|
||||
"~ub688a894-3697-80d3-8006-51cd67bc1de9"
|
||||
]
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51cd477981bc": {
|
||||
"~#shape": {
|
||||
"~:y": 297,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Rectangle",
|
||||
"~:width": 153,
|
||||
"~:type": "~:rect",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 239,
|
||||
"~:y": 297
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 392,
|
||||
"~:y": 297
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 392,
|
||||
"~:y": 441
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 239,
|
||||
"~:y": 441
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51cd477981bc",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 239,
|
||||
"~:proportion": 1,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 239,
|
||||
"~:y": 297,
|
||||
"~:width": 153,
|
||||
"~:height": 144,
|
||||
"~:x1": 239,
|
||||
"~:y1": 297,
|
||||
"~:x2": 392,
|
||||
"~:y2": 441
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#ff0000",
|
||||
"~:fill-opacity": 1
|
||||
},
|
||||
{
|
||||
"~:fill-color": "#003fff",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 144,
|
||||
"~:flip-y": null
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51cd5504e381": {
|
||||
"~#shape": {
|
||||
"~:y": 297,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Rectangle",
|
||||
"~:width": 153,
|
||||
"~:type": "~:rect",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 442,
|
||||
"~:y": 297
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 595,
|
||||
"~:y": 297
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 595,
|
||||
"~:y": 441
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 442,
|
||||
"~:y": 441
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51cd5504e381",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 442,
|
||||
"~:proportion": 1,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 442,
|
||||
"~:y": 297,
|
||||
"~:width": 153,
|
||||
"~:height": 144,
|
||||
"~:x1": 442,
|
||||
"~:y1": 297,
|
||||
"~:x2": 595,
|
||||
"~:y2": 441
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#ff0000",
|
||||
"~:fill-opacity": 0.5
|
||||
},
|
||||
{
|
||||
"~:fill-color": "#003fff",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 144,
|
||||
"~:flip-y": null
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51cd5de7c5f3": {
|
||||
"~#shape": {
|
||||
"~:y": 476.99998474121094,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Rectangle",
|
||||
"~:width": 153,
|
||||
"~:type": "~:rect",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 239,
|
||||
"~:y": 476.99998474121094
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 392,
|
||||
"~:y": 476.99998474121094
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 392,
|
||||
"~:y": 620.9999847412109
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 239,
|
||||
"~:y": 620.9999847412109
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51cd5de7c5f3",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 239,
|
||||
"~:proportion": 1,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 239,
|
||||
"~:y": 476.99998474121094,
|
||||
"~:width": 153,
|
||||
"~:height": 144,
|
||||
"~:x1": 239,
|
||||
"~:y1": 476.99998474121094,
|
||||
"~:x2": 392,
|
||||
"~:y2": 620.9999847412109
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#ff0000",
|
||||
"~:fill-opacity": 0.5
|
||||
},
|
||||
{
|
||||
"~:fill-color-gradient": {
|
||||
"~:stops": [
|
||||
{
|
||||
"~:color": "#003fff",
|
||||
"~:offset": 0,
|
||||
"~:opacity": 1
|
||||
},
|
||||
{
|
||||
"~:color": "#003fff",
|
||||
"~:offset": 1,
|
||||
"~:opacity": 0
|
||||
}
|
||||
],
|
||||
"~:width": 1,
|
||||
"~:type": "~:linear",
|
||||
"~:start-x": 0.5,
|
||||
"~:end-y": 1,
|
||||
"~:end-x": 0.5,
|
||||
"~:start-y": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 144,
|
||||
"~:flip-y": null
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51cd67bc1de9": {
|
||||
"~#shape": {
|
||||
"~:y": 476.99998474121094,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Rectangle",
|
||||
"~:width": 153,
|
||||
"~:type": "~:rect",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 442,
|
||||
"~:y": 476.99998474121094
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 595,
|
||||
"~:y": 476.99998474121094
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 595,
|
||||
"~:y": 620.9999847412109
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 442,
|
||||
"~:y": 620.9999847412109
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51cd67bc1de9",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 442,
|
||||
"~:proportion": 1,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 442,
|
||||
"~:y": 476.99998474121094,
|
||||
"~:width": 153,
|
||||
"~:height": 144,
|
||||
"~:x1": 442,
|
||||
"~:y1": 476.99998474121094,
|
||||
"~:x2": 595,
|
||||
"~:y2": 620.9999847412109
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color-gradient": {
|
||||
"~:stops": [
|
||||
{
|
||||
"~:color": "#010512",
|
||||
"~:offset": 0,
|
||||
"~:opacity": 0
|
||||
},
|
||||
{
|
||||
"~:color": "#010512",
|
||||
"~:offset": 1,
|
||||
"~:opacity": 1
|
||||
}
|
||||
],
|
||||
"~:width": 1,
|
||||
"~:type": "~:radial",
|
||||
"~:start-x": 0.5,
|
||||
"~:end-y": 1,
|
||||
"~:end-x": 0.5,
|
||||
"~:start-y": 0.5
|
||||
},
|
||||
"~:fill-opacity": 0.5
|
||||
},
|
||||
{
|
||||
"~:fill-image": {
|
||||
"~:mtype": "image/jpeg",
|
||||
"~:name": "Aptenodytes_forsteri_-Snow_Hill_Island,_Antarctica_-adults_and_juvenile-8.jpg",
|
||||
"~:keep-aspect-ratio": true,
|
||||
"~:width": 872,
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cda84a405a",
|
||||
"~:height": 1400
|
||||
},
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 144,
|
||||
"~:flip-y": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cd3a51c256",
|
||||
"~:name": "Page 1"
|
||||
}
|
||||
},
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cd3a51c255",
|
||||
"~:options": {
|
||||
"~:components-v2": true,
|
||||
"~:base-font-size": "16px"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,538 @@
|
|||
{
|
||||
"~:features": {
|
||||
"~#set": [
|
||||
"fdata/path-data",
|
||||
"plugins/runtime",
|
||||
"design-tokens/v1",
|
||||
"variants/v1",
|
||||
"layout/grid",
|
||||
"styles/v2",
|
||||
"fdata/pointer-map",
|
||||
"fdata/objects-map",
|
||||
"render-wasm/v1",
|
||||
"components/v2",
|
||||
"fdata/shape-data-type"
|
||||
]
|
||||
},
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:permissions": {
|
||||
"~:type": "~:membership",
|
||||
"~:is-owner": true,
|
||||
"~:is-admin": true,
|
||||
"~:can-edit": true,
|
||||
"~:can-read": true,
|
||||
"~:is-logged": true
|
||||
},
|
||||
"~:has-media-trimmed": false,
|
||||
"~:comment-thread-seqn": 0,
|
||||
"~:name": "Multiple strokes",
|
||||
"~:revn": 16,
|
||||
"~:modified-at": "~m1749564011553",
|
||||
"~:vern": 0,
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cc78297208",
|
||||
"~:is-shared": false,
|
||||
"~:migrations": {
|
||||
"~#ordered-set": [
|
||||
"legacy-2",
|
||||
"legacy-3",
|
||||
"legacy-5",
|
||||
"legacy-6",
|
||||
"legacy-7",
|
||||
"legacy-8",
|
||||
"legacy-9",
|
||||
"legacy-10",
|
||||
"legacy-11",
|
||||
"legacy-12",
|
||||
"legacy-13",
|
||||
"legacy-14",
|
||||
"legacy-16",
|
||||
"legacy-17",
|
||||
"legacy-18",
|
||||
"legacy-19",
|
||||
"legacy-25",
|
||||
"legacy-26",
|
||||
"legacy-27",
|
||||
"legacy-28",
|
||||
"legacy-29",
|
||||
"legacy-31",
|
||||
"legacy-32",
|
||||
"legacy-33",
|
||||
"legacy-34",
|
||||
"legacy-36",
|
||||
"legacy-37",
|
||||
"legacy-38",
|
||||
"legacy-39",
|
||||
"legacy-40",
|
||||
"legacy-41",
|
||||
"legacy-42",
|
||||
"legacy-43",
|
||||
"legacy-44",
|
||||
"legacy-45",
|
||||
"legacy-46",
|
||||
"legacy-47",
|
||||
"legacy-48",
|
||||
"legacy-49",
|
||||
"legacy-50",
|
||||
"legacy-51",
|
||||
"legacy-52",
|
||||
"legacy-53",
|
||||
"legacy-54",
|
||||
"legacy-55",
|
||||
"legacy-56",
|
||||
"legacy-57",
|
||||
"legacy-59",
|
||||
"legacy-62",
|
||||
"legacy-65",
|
||||
"legacy-66",
|
||||
"legacy-67",
|
||||
"0001-remove-tokens-from-groups",
|
||||
"0002-normalize-bool-content",
|
||||
"0002-clean-shape-interactions",
|
||||
"0003-fix-root-shape",
|
||||
"0003-convert-path-content",
|
||||
"0004-add-partial-text-touched-flags",
|
||||
"0005-deprecate-image-type",
|
||||
"0006-fix-old-texts-fills",
|
||||
"0004-clean-shadow-and-colors",
|
||||
"0007-clear-invalid-strokes-and-fills-v2",
|
||||
"0008-fix-library-colors-opacity",
|
||||
"0009-add-partial-text-touched-flags"
|
||||
]
|
||||
},
|
||||
"~:version": 67,
|
||||
"~:project-id": "~u53a7ff09-2228-81d3-8006-4b5ea964593b",
|
||||
"~:created-at": "~m1749563833517",
|
||||
"~:data": {
|
||||
"~:pages": [
|
||||
"~uc0939f58-37bc-805d-8006-51cc78297209"
|
||||
],
|
||||
"~:pages-index": {
|
||||
"~uc0939f58-37bc-805d-8006-51cc78297209": {
|
||||
"~:objects": {
|
||||
"~u00000000-0000-0000-0000-000000000000": {
|
||||
"~#shape": {
|
||||
"~:y": 0,
|
||||
"~:hide-fill-on-export": false,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:name": "Root Frame",
|
||||
"~:width": 0.01,
|
||||
"~:type": "~:frame",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.01
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.01
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 0,
|
||||
"~:proportion": 1.0,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 0,
|
||||
"~:y": 0,
|
||||
"~:width": 0.01,
|
||||
"~:height": 0.01,
|
||||
"~:x1": 0,
|
||||
"~:y1": 0,
|
||||
"~:x2": 0.01,
|
||||
"~:y2": 0.01
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#FFFFFF",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 0.01,
|
||||
"~:flip-y": null,
|
||||
"~:shapes": [
|
||||
"~ub688a894-3697-80d3-8006-51cc8a55c2fd",
|
||||
"~ub688a894-3697-80d3-8006-51ccce062cb3",
|
||||
"~ub688a894-3697-80d3-8006-51ccfa2e6eeb"
|
||||
]
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51cc8a55c2fd": {
|
||||
"~#shape": {
|
||||
"~:y": 334,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Rectangle",
|
||||
"~:width": 147,
|
||||
"~:type": "~:rect",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 199,
|
||||
"~:y": 334
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 346,
|
||||
"~:y": 334
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 346,
|
||||
"~:y": 464
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 199,
|
||||
"~:y": 464
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51cc8a55c2fd",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#0000ff",
|
||||
"~:stroke-opacity": 0.5,
|
||||
"~:stroke-alignment": "~:outer",
|
||||
"~:stroke-width": 20
|
||||
},
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#ff0000",
|
||||
"~:stroke-opacity": 1,
|
||||
"~:stroke-alignment": "~:center",
|
||||
"~:stroke-width": 5
|
||||
},
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#000000",
|
||||
"~:stroke-opacity": 1,
|
||||
"~:stroke-alignment": "~:inner",
|
||||
"~:stroke-width": 10
|
||||
}
|
||||
],
|
||||
"~:x": 199,
|
||||
"~:proportion": 1,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 199,
|
||||
"~:y": 334,
|
||||
"~:width": 147,
|
||||
"~:height": 130,
|
||||
"~:x1": 199,
|
||||
"~:y1": 334,
|
||||
"~:x2": 346,
|
||||
"~:y2": 464
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#B1B2B5",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 130,
|
||||
"~:flip-y": null
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51ccce062cb3": {
|
||||
"~#shape": {
|
||||
"~:y": 334,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Ellipse",
|
||||
"~:width": 130,
|
||||
"~:type": "~:circle",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 512.9999961853027,
|
||||
"~:y": 334
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 642.9999961853027,
|
||||
"~:y": 334
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 642.9999961853027,
|
||||
"~:y": 459
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 512.9999961853027,
|
||||
"~:y": 459
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51ccce062cb3",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#0000ff",
|
||||
"~:stroke-opacity": 0.5,
|
||||
"~:stroke-alignment": "~:outer",
|
||||
"~:stroke-width": 20
|
||||
},
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#ff0000",
|
||||
"~:stroke-opacity": 1,
|
||||
"~:stroke-alignment": "~:center",
|
||||
"~:stroke-width": 5
|
||||
},
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#000000",
|
||||
"~:stroke-opacity": 1,
|
||||
"~:stroke-alignment": "~:inner",
|
||||
"~:stroke-width": 10
|
||||
}
|
||||
],
|
||||
"~:x": 512.9999961853027,
|
||||
"~:proportion": 1,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 512.9999961853027,
|
||||
"~:y": 334,
|
||||
"~:width": 130,
|
||||
"~:height": 125,
|
||||
"~:x1": 512.9999961853027,
|
||||
"~:y1": 334,
|
||||
"~:x2": 642.9999961853027,
|
||||
"~:y2": 459
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#B1B2B5",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 125,
|
||||
"~:flip-y": null
|
||||
}
|
||||
},
|
||||
"~ub688a894-3697-80d3-8006-51ccfa2e6eeb": {
|
||||
"~#shape": {
|
||||
"~:y": null,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:content": {
|
||||
"~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAACm6Y9DAAAJRAMAAADAyXlD4wIQRCW0I0NPCiJE9sBWQzqOK0QDAAAA4+aEQyUSNUS++9dDuQojRDj3xUPoxhlEAwAAALLys0MYgxBEpumPQwAACUSm6Y9DAAAJRA=="
|
||||
},
|
||||
"~:name": "Path",
|
||||
"~:width": null,
|
||||
"~:type": "~:path",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 198.9999999038273,
|
||||
"~:y": 547.9999675750732
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 401.00001319474995,
|
||||
"~:y": 547.9999675750732
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 401.00001319474995,
|
||||
"~:y": 696.9999543199095
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 198.9999999038273,
|
||||
"~:y": 696.9999543199095
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:id": "~ub688a894-3697-80d3-8006-51ccfa2e6eeb",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#0000ff",
|
||||
"~:stroke-opacity": 0.5,
|
||||
"~:stroke-alignment": "~:outer",
|
||||
"~:stroke-width": 20
|
||||
},
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#ff0000",
|
||||
"~:stroke-opacity": 1,
|
||||
"~:stroke-alignment": "~:center",
|
||||
"~:stroke-width": 5
|
||||
},
|
||||
{
|
||||
"~:stroke-style": "~:solid",
|
||||
"~:stroke-color": "#000000",
|
||||
"~:stroke-opacity": 1,
|
||||
"~:stroke-alignment": "~:inner",
|
||||
"~:stroke-width": 10
|
||||
}
|
||||
],
|
||||
"~:x": null,
|
||||
"~:proportion": 1,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 198.9999999038273,
|
||||
"~:y": 547.9999675750732,
|
||||
"~:width": 202.00001329092265,
|
||||
"~:height": 148.9999867448363,
|
||||
"~:x1": 198.9999999038273,
|
||||
"~:y1": 547.9999675750732,
|
||||
"~:x2": 401.00001319474995,
|
||||
"~:y2": 696.9999543199095
|
||||
}
|
||||
},
|
||||
"~:fills": [],
|
||||
"~:flip-x": null,
|
||||
"~:height": null,
|
||||
"~:flip-y": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cc78297209",
|
||||
"~:name": "Page 1"
|
||||
}
|
||||
},
|
||||
"~:id": "~uc0939f58-37bc-805d-8006-51cc78297208",
|
||||
"~:options": {
|
||||
"~:components-v2": true,
|
||||
"~:base-font-size": "16px"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,486 @@
|
|||
{
|
||||
"~:features": {
|
||||
"~#set": [
|
||||
"fdata/path-data",
|
||||
"plugins/runtime",
|
||||
"design-tokens/v1",
|
||||
"variants/v1",
|
||||
"layout/grid",
|
||||
"styles/v2",
|
||||
"fdata/pointer-map",
|
||||
"fdata/objects-map",
|
||||
"render-wasm/v1",
|
||||
"components/v2",
|
||||
"fdata/shape-data-type"
|
||||
]
|
||||
},
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:permissions": {
|
||||
"~:type": "~:membership",
|
||||
"~:is-owner": true,
|
||||
"~:is-admin": true,
|
||||
"~:can-edit": true,
|
||||
"~:can-read": true,
|
||||
"~:is-logged": true
|
||||
},
|
||||
"~:has-media-trimmed": false,
|
||||
"~:comment-thread-seqn": 0,
|
||||
"~:name": "Text: Custom Fonts",
|
||||
"~:revn": 13,
|
||||
"~:modified-at": "~m1750151641034",
|
||||
"~:vern": 0,
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-59827d964a9b",
|
||||
"~:is-shared": false,
|
||||
"~:migrations": {
|
||||
"~#ordered-set": [
|
||||
"legacy-2",
|
||||
"legacy-3",
|
||||
"legacy-5",
|
||||
"legacy-6",
|
||||
"legacy-7",
|
||||
"legacy-8",
|
||||
"legacy-9",
|
||||
"legacy-10",
|
||||
"legacy-11",
|
||||
"legacy-12",
|
||||
"legacy-13",
|
||||
"legacy-14",
|
||||
"legacy-16",
|
||||
"legacy-17",
|
||||
"legacy-18",
|
||||
"legacy-19",
|
||||
"legacy-25",
|
||||
"legacy-26",
|
||||
"legacy-27",
|
||||
"legacy-28",
|
||||
"legacy-29",
|
||||
"legacy-31",
|
||||
"legacy-32",
|
||||
"legacy-33",
|
||||
"legacy-34",
|
||||
"legacy-36",
|
||||
"legacy-37",
|
||||
"legacy-38",
|
||||
"legacy-39",
|
||||
"legacy-40",
|
||||
"legacy-41",
|
||||
"legacy-42",
|
||||
"legacy-43",
|
||||
"legacy-44",
|
||||
"legacy-45",
|
||||
"legacy-46",
|
||||
"legacy-47",
|
||||
"legacy-48",
|
||||
"legacy-49",
|
||||
"legacy-50",
|
||||
"legacy-51",
|
||||
"legacy-52",
|
||||
"legacy-53",
|
||||
"legacy-54",
|
||||
"legacy-55",
|
||||
"legacy-56",
|
||||
"legacy-57",
|
||||
"legacy-59",
|
||||
"legacy-62",
|
||||
"legacy-65",
|
||||
"legacy-66",
|
||||
"legacy-67",
|
||||
"0001-remove-tokens-from-groups",
|
||||
"0002-normalize-bool-content",
|
||||
"0002-clean-shape-interactions",
|
||||
"0003-fix-root-shape",
|
||||
"0003-convert-path-content",
|
||||
"0004-clean-shadow-and-colors",
|
||||
"0005-deprecate-image-type",
|
||||
"0006-fix-old-texts-fills",
|
||||
"0007-clear-invalid-strokes-and-fills-v2",
|
||||
"0008-fix-library-colors-opacity",
|
||||
"0009-add-partial-text-touched-flags"
|
||||
]
|
||||
},
|
||||
"~:version": 67,
|
||||
"~:project-id": "~u53a7ff09-2228-81d3-8006-4b5ea964593b",
|
||||
"~:created-at": "~m1750081311326",
|
||||
"~:data": {
|
||||
"~:pages": [
|
||||
"~u434b0541-fa2f-802f-8006-59827d964a9c"
|
||||
],
|
||||
"~:pages-index": {
|
||||
"~u434b0541-fa2f-802f-8006-59827d964a9c": {
|
||||
"~:objects": {
|
||||
"~u00000000-0000-0000-0000-000000000000": {
|
||||
"~#shape": {
|
||||
"~:y": 0,
|
||||
"~:hide-fill-on-export": false,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:name": "Root Frame",
|
||||
"~:width": 0.01,
|
||||
"~:type": "~:frame",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.01
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.01
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 0,
|
||||
"~:proportion": 1.0,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 0,
|
||||
"~:y": 0,
|
||||
"~:width": 0.01,
|
||||
"~:height": 0.01,
|
||||
"~:x1": 0,
|
||||
"~:y1": 0,
|
||||
"~:x2": 0.01,
|
||||
"~:y2": 0.01
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#FFFFFF",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 0.01,
|
||||
"~:flip-y": null,
|
||||
"~:shapes": [
|
||||
"~u7d85a63e-18e7-809f-8006-59827fe8501e",
|
||||
"~u7d85a63e-18e7-809f-8006-59833ef5fcef"
|
||||
]
|
||||
}
|
||||
},
|
||||
"~u7d85a63e-18e7-809f-8006-59827fe8501e": {
|
||||
"~#shape": {
|
||||
"~:y": 451.9999962296588,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:auto-width",
|
||||
"~:content": {
|
||||
"~:type": "root",
|
||||
"~:key": "xgmgu1frox",
|
||||
"~:children": [
|
||||
{
|
||||
"~:type": "paragraph-set",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "1.2",
|
||||
"~:font-style": "normal",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "",
|
||||
"~:font-style": "normal",
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:font-id": "custom-7d85a63e-18e7-809f-8006-5983057a9b7c",
|
||||
"~:key": "ee7vl7klqs",
|
||||
"~:font-size": "72",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:font-variant-id": "normal-400",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"Nodesto Caps Condensed\"",
|
||||
"~:text": "Penpot & Dragons"
|
||||
}
|
||||
],
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:text-align": "center",
|
||||
"~:font-id": "custom-7d85a63e-18e7-809f-8006-5983057a9b7c",
|
||||
"~:key": "17bt2f4evfs",
|
||||
"~:font-size": "72",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:text-direction": "ltr",
|
||||
"~:type": "paragraph",
|
||||
"~:font-variant-id": "normal-400",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"Nodesto Caps Condensed\""
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"~:vertical-align": "top"
|
||||
},
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Penpot & Dragons",
|
||||
"~:width": 403.99995992417394,
|
||||
"~:type": "~:text",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 744.0000211580308,
|
||||
"~:y": 451.9999962296588
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 1147.9999810822046,
|
||||
"~:y": 451.9999962296588
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 1147.9999810822046,
|
||||
"~:y": 537.9999971833331
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 744.0000211580308,
|
||||
"~:y": 537.9999971833331
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:id": "~u7d85a63e-18e7-809f-8006-59827fe8501e",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:x": 744.0000211580307,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 744.0000211580307,
|
||||
"~:y": 451.9999962296588,
|
||||
"~:width": 403.99995992417394,
|
||||
"~:height": 86.00000095367432,
|
||||
"~:x1": 744.0000211580307,
|
||||
"~:y1": 451.9999962296588,
|
||||
"~:x2": 1147.9999810822046,
|
||||
"~:y2": 537.9999971833331
|
||||
}
|
||||
},
|
||||
"~:flip-x": null,
|
||||
"~:height": 86.00000095367432,
|
||||
"~:flip-y": null
|
||||
}
|
||||
},
|
||||
"~u7d85a63e-18e7-809f-8006-59833ef5fcef": {
|
||||
"~#shape": {
|
||||
"~:y": 537.9999971833331,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:auto-width",
|
||||
"~:content": {
|
||||
"~:type": "root",
|
||||
"~:key": "xgmgu1frox",
|
||||
"~:children": [
|
||||
{
|
||||
"~:type": "paragraph-set",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "1.2",
|
||||
"~:font-style": "normal",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "",
|
||||
"~:font-style": "normal",
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:font-id": "custom-7d85a63e-18e7-809f-8006-59832d696634",
|
||||
"~:key": "ee7vl7klqs",
|
||||
"~:font-size": "36",
|
||||
"~:font-weight": "500",
|
||||
"~:typography-ref-file": null,
|
||||
"~:font-variant-id": "normal-500",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"Mr Eaves SC Remake\"",
|
||||
"~:text": "Lorem Ipsum Dolors Sit Amet"
|
||||
}
|
||||
],
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:text-align": "center",
|
||||
"~:font-id": "custom-7d85a63e-18e7-809f-8006-59832d696634",
|
||||
"~:key": "17bt2f4evfs",
|
||||
"~:font-size": "0",
|
||||
"~:font-weight": "500",
|
||||
"~:typography-ref-file": null,
|
||||
"~:text-direction": "ltr",
|
||||
"~:type": "paragraph",
|
||||
"~:font-variant-id": "normal-500",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"Mr Eaves SC Remake\""
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"~:vertical-align": "top"
|
||||
},
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "Penpot & Dragons",
|
||||
"~:width": 466.0000131576671,
|
||||
"~:type": "~:text",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 712.9999941849438,
|
||||
"~:y": 537.9999971833331
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 1179.0000073426108,
|
||||
"~:y": 537.9999971833331
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 1179.0000073426108,
|
||||
"~:y": 580.9999976601703
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 712.9999941849438,
|
||||
"~:y": 580.9999976601703
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:id": "~u7d85a63e-18e7-809f-8006-59833ef5fcef",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:x": 712.9999941849437,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 712.9999941849437,
|
||||
"~:y": 537.9999971833331,
|
||||
"~:width": 466.0000131576671,
|
||||
"~:height": 43.00000047683716,
|
||||
"~:x1": 712.9999941849437,
|
||||
"~:y1": 537.9999971833331,
|
||||
"~:x2": 1179.0000073426108,
|
||||
"~:y2": 580.9999976601703
|
||||
}
|
||||
},
|
||||
"~:flip-x": null,
|
||||
"~:height": 43.00000047683716,
|
||||
"~:flip-y": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-59827d964a9c",
|
||||
"~:name": "Page 1"
|
||||
}
|
||||
},
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-59827d964a9b",
|
||||
"~:options": {
|
||||
"~:components-v2": true,
|
||||
"~:base-font-size": "16px"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,420 @@
|
|||
{
|
||||
"~:features": {
|
||||
"~#set": [
|
||||
"fdata/path-data",
|
||||
"plugins/runtime",
|
||||
"design-tokens/v1",
|
||||
"variants/v1",
|
||||
"layout/grid",
|
||||
"styles/v2",
|
||||
"fdata/pointer-map",
|
||||
"fdata/objects-map",
|
||||
"render-wasm/v1",
|
||||
"components/v2",
|
||||
"fdata/shape-data-type"
|
||||
]
|
||||
},
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:permissions": {
|
||||
"~:type": "~:membership",
|
||||
"~:is-owner": true,
|
||||
"~:is-admin": true,
|
||||
"~:can-edit": true,
|
||||
"~:can-read": true,
|
||||
"~:is-logged": true
|
||||
},
|
||||
"~:has-media-trimmed": false,
|
||||
"~:comment-thread-seqn": 0,
|
||||
"~:name": "Text: Google Fonts",
|
||||
"~:revn": 9,
|
||||
"~:modified-at": "~m1750150559868",
|
||||
"~:vern": 0,
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-5981e47bd732",
|
||||
"~:is-shared": false,
|
||||
"~:migrations": {
|
||||
"~#ordered-set": [
|
||||
"legacy-2",
|
||||
"legacy-3",
|
||||
"legacy-5",
|
||||
"legacy-6",
|
||||
"legacy-7",
|
||||
"legacy-8",
|
||||
"legacy-9",
|
||||
"legacy-10",
|
||||
"legacy-11",
|
||||
"legacy-12",
|
||||
"legacy-13",
|
||||
"legacy-14",
|
||||
"legacy-16",
|
||||
"legacy-17",
|
||||
"legacy-18",
|
||||
"legacy-19",
|
||||
"legacy-25",
|
||||
"legacy-26",
|
||||
"legacy-27",
|
||||
"legacy-28",
|
||||
"legacy-29",
|
||||
"legacy-31",
|
||||
"legacy-32",
|
||||
"legacy-33",
|
||||
"legacy-34",
|
||||
"legacy-36",
|
||||
"legacy-37",
|
||||
"legacy-38",
|
||||
"legacy-39",
|
||||
"legacy-40",
|
||||
"legacy-41",
|
||||
"legacy-42",
|
||||
"legacy-43",
|
||||
"legacy-44",
|
||||
"legacy-45",
|
||||
"legacy-46",
|
||||
"legacy-47",
|
||||
"legacy-48",
|
||||
"legacy-49",
|
||||
"legacy-50",
|
||||
"legacy-51",
|
||||
"legacy-52",
|
||||
"legacy-53",
|
||||
"legacy-54",
|
||||
"legacy-55",
|
||||
"legacy-56",
|
||||
"legacy-57",
|
||||
"legacy-59",
|
||||
"legacy-62",
|
||||
"legacy-65",
|
||||
"legacy-66",
|
||||
"legacy-67",
|
||||
"0001-remove-tokens-from-groups",
|
||||
"0002-normalize-bool-content",
|
||||
"0002-clean-shape-interactions",
|
||||
"0003-fix-root-shape",
|
||||
"0003-convert-path-content",
|
||||
"0004-clean-shadow-and-colors",
|
||||
"0005-deprecate-image-type",
|
||||
"0006-fix-old-texts-fills",
|
||||
"0007-clear-invalid-strokes-and-fills-v2",
|
||||
"0008-fix-library-colors-opacity",
|
||||
"0009-add-partial-text-touched-flags"
|
||||
]
|
||||
},
|
||||
"~:version": 67,
|
||||
"~:project-id": "~u53a7ff09-2228-81d3-8006-4b5ea964593b",
|
||||
"~:created-at": "~m1750081154582",
|
||||
"~:data": {
|
||||
"~:pages": [
|
||||
"~u434b0541-fa2f-802f-8006-5981e47bd733"
|
||||
],
|
||||
"~:pages-index": {
|
||||
"~u434b0541-fa2f-802f-8006-5981e47bd733": {
|
||||
"~:objects": {
|
||||
"~u00000000-0000-0000-0000-000000000000": {
|
||||
"~#shape": {
|
||||
"~:y": 0,
|
||||
"~:hide-fill-on-export": false,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:name": "Root Frame",
|
||||
"~:width": 0.01,
|
||||
"~:type": "~:frame",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.01,
|
||||
"~:y": 0.01
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 0.0,
|
||||
"~:y": 0.01
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:r2": 0,
|
||||
"~:proportion-lock": false,
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:r3": 0,
|
||||
"~:r1": 0,
|
||||
"~:id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:strokes": [],
|
||||
"~:x": 0,
|
||||
"~:proportion": 1.0,
|
||||
"~:r4": 0,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 0,
|
||||
"~:y": 0,
|
||||
"~:width": 0.01,
|
||||
"~:height": 0.01,
|
||||
"~:x1": 0,
|
||||
"~:y1": 0,
|
||||
"~:x2": 0.01,
|
||||
"~:y2": 0.01
|
||||
}
|
||||
},
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#FFFFFF",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:flip-x": null,
|
||||
"~:height": 0.01,
|
||||
"~:flip-y": null,
|
||||
"~:shapes": [
|
||||
"~u83b40135-4e19-8020-8006-598226885685"
|
||||
]
|
||||
}
|
||||
},
|
||||
"~u83b40135-4e19-8020-8006-598226885685": {
|
||||
"~#shape": {
|
||||
"~:y": 399.99997901916055,
|
||||
"~:transform": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:rotation": 0,
|
||||
"~:grow-type": "~:fixed",
|
||||
"~:content": {
|
||||
"~:type": "root",
|
||||
"~:key": "u3udm63y8h",
|
||||
"~:children": [
|
||||
{
|
||||
"~:type": "paragraph-set",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "1.2",
|
||||
"~:font-style": "normal",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "",
|
||||
"~:font-style": "normal",
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:font-id": "gfont-eb-garamond",
|
||||
"~:key": "hjb7822r9z",
|
||||
"~:font-size": "36",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:font-variant-id": "regular",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"EB Garamond\"",
|
||||
"~:text": "This is an example text"
|
||||
}
|
||||
],
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:text-align": "left",
|
||||
"~:font-id": "gfont-eb-garamond",
|
||||
"~:key": "2dka2139qgl",
|
||||
"~:font-size": "36",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:text-direction": "ltr",
|
||||
"~:type": "paragraph",
|
||||
"~:font-variant-id": "regular",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"EB Garamond\""
|
||||
},
|
||||
{
|
||||
"~:line-height": "1.2",
|
||||
"~:font-style": "normal",
|
||||
"~:children": [
|
||||
{
|
||||
"~:line-height": "",
|
||||
"~:font-style": "normal",
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:font-id": "gfont-eb-garamond",
|
||||
"~:key": "26bngh5on3d",
|
||||
"~:font-size": "36",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:font-variant-id": "regular",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"EB Garamond\"",
|
||||
"~:text": "with "
|
||||
},
|
||||
{
|
||||
"~:line-height": "",
|
||||
"~:font-style": "normal",
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:font-id": "gfont-fira-code",
|
||||
"~:key": "23oemgkf8le",
|
||||
"~:font-size": "36",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:font-variant-id": "regular",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"Fira Code\"",
|
||||
"~:text": "Google Fonts"
|
||||
}
|
||||
],
|
||||
"~:typography-ref-id": null,
|
||||
"~:text-transform": "none",
|
||||
"~:text-align": "left",
|
||||
"~:font-id": "gfont-fira-code",
|
||||
"~:key": "1dxk7oihnqh",
|
||||
"~:font-size": "36",
|
||||
"~:font-weight": "400",
|
||||
"~:typography-ref-file": null,
|
||||
"~:text-direction": "ltr",
|
||||
"~:type": "paragraph",
|
||||
"~:font-variant-id": "regular",
|
||||
"~:text-decoration": "none",
|
||||
"~:letter-spacing": "0",
|
||||
"~:fills": [
|
||||
{
|
||||
"~:fill-color": "#000000",
|
||||
"~:fill-opacity": 1
|
||||
}
|
||||
],
|
||||
"~:font-family": "\"Fira Code\""
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"~:vertical-align": "top"
|
||||
},
|
||||
"~:hide-in-viewer": false,
|
||||
"~:name": "This is an example textwith Google Fonts",
|
||||
"~:width": 325.00011493483566,
|
||||
"~:type": "~:text",
|
||||
"~:points": [
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 680.9999634764606,
|
||||
"~:y": 399.9999790191605
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 1006.0000784112963,
|
||||
"~:y": 399.9999790191605
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 1006.0000784112963,
|
||||
"~:y": 658.0000126361805
|
||||
}
|
||||
},
|
||||
{
|
||||
"~#point": {
|
||||
"~:x": 680.9999634764606,
|
||||
"~:y": 658.0000126361805
|
||||
}
|
||||
}
|
||||
],
|
||||
"~:layout-item-h-sizing": "~:fix",
|
||||
"~:transform-inverse": {
|
||||
"~#matrix": {
|
||||
"~:a": 1.0,
|
||||
"~:b": 0.0,
|
||||
"~:c": 0.0,
|
||||
"~:d": 1.0,
|
||||
"~:e": 0.0,
|
||||
"~:f": 0.0
|
||||
}
|
||||
},
|
||||
"~:id": "~u83b40135-4e19-8020-8006-598226885685",
|
||||
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
|
||||
"~:x": 680.9999634764606,
|
||||
"~:selrect": {
|
||||
"~#rect": {
|
||||
"~:x": 680.9999634764606,
|
||||
"~:y": 399.99997901916055,
|
||||
"~:width": 325.00011493483566,
|
||||
"~:height": 258.00003361702,
|
||||
"~:x1": 680.9999634764606,
|
||||
"~:y1": 399.99997901916055,
|
||||
"~:x2": 1006.0000784112963,
|
||||
"~:y2": 658.0000126361806
|
||||
}
|
||||
},
|
||||
"~:flip-x": null,
|
||||
"~:height": 258.00003361702,
|
||||
"~:flip-y": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-5981e47bd733",
|
||||
"~:name": "Page 1"
|
||||
}
|
||||
},
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-5981e47bd732",
|
||||
"~:options": {
|
||||
"~:components-v2": true,
|
||||
"~:base-font-size": "16px"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
[
|
||||
{
|
||||
"~:font-style": "normal",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-5983057a9b7c",
|
||||
"~:font-weight": 400,
|
||||
"~:ttf-file-id": "~u69e76833-0816-49fa-8c7b-4b97c71c6f1a",
|
||||
"~:modified-at": "~m1750081452108",
|
||||
"~:otf-file-id": "~uf7ea405b-73be-40d7-8ce4-fbf734696997",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-5983078ad50e",
|
||||
"~:woff1-file-id": "~uaef0b0c5-56de-47c7-bd99-fb5e249ccef9",
|
||||
"~:created-at": "~m1750081452108",
|
||||
"~:font-family": "Nodesto Caps Condensed"
|
||||
},
|
||||
{
|
||||
"~:font-style": "italic",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-5983057a9b7c",
|
||||
"~:font-weight": 400,
|
||||
"~:ttf-file-id": "~uc45955ee-8c16-47ce-a89e-1a2faadb4178",
|
||||
"~:modified-at": "~m1750081452589",
|
||||
"~:otf-file-id": "~ucc0a799d-34ed-4829-a0de-6d7efec8202c",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-59830795b436",
|
||||
"~:woff1-file-id": "~u9940a178-833e-4a4c-8bc3-64ee09472ea6",
|
||||
"~:created-at": "~m1750081452589",
|
||||
"~:font-family": "Nodesto Caps Condensed"
|
||||
},
|
||||
{
|
||||
"~:font-style": "normal",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-5983057a9b7c",
|
||||
"~:font-weight": 700,
|
||||
"~:ttf-file-id": "~u5c59fbdc-46de-456f-8da6-0dcd916e95c1",
|
||||
"~:modified-at": "~m1750081452631",
|
||||
"~:otf-file-id": "~uadde63b1-c9f4-484a-bf1c-1121b77d751d",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-598307a05c77",
|
||||
"~:woff1-file-id": "~ucea20394-48af-41a0-8d0f-ada497a5ffe3",
|
||||
"~:created-at": "~m1750081452631",
|
||||
"~:font-family": "Nodesto Caps Condensed"
|
||||
},
|
||||
{
|
||||
"~:font-style": "italic",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-5983057a9b7c",
|
||||
"~:font-weight": 700,
|
||||
"~:ttf-file-id": "~u5060a5c4-c7c3-44ea-aa0e-5797d6647ec0",
|
||||
"~:modified-at": "~m1750081452674",
|
||||
"~:otf-file-id": "~u1646d986-88d1-4904-910d-663da9e35eef",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-598307a94233",
|
||||
"~:woff1-file-id": "~ue7691712-70d1-49d9-a596-7b4ac495ff15",
|
||||
"~:created-at": "~m1750081452674",
|
||||
"~:font-family": "Nodesto Caps Condensed"
|
||||
},
|
||||
{
|
||||
"~:font-style": "normal",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-59831351af03",
|
||||
"~:font-weight": 700,
|
||||
"~:ttf-file-id": "~u3ccf58ee-731c-402f-8b26-5b5049abbe7f",
|
||||
"~:modified-at": "~m1750081469706",
|
||||
"~:otf-file-id": "~u96293106-78ff-4683-b819-c1c4c1e44705",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-5983185366a8",
|
||||
"~:woff1-file-id": "~uaf7a782a-c96b-4926-a08a-c6a81a1726dc",
|
||||
"~:created-at": "~m1750081469706",
|
||||
"~:font-family": "Bookinsanity Remake"
|
||||
},
|
||||
{
|
||||
"~:font-style": "normal",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-59831351af03",
|
||||
"~:font-weight": 400,
|
||||
"~:ttf-file-id": "~u78583622-dc5d-4780-990f-85afb4ad59e9",
|
||||
"~:modified-at": "~m1750081469774",
|
||||
"~:otf-file-id": "~ua5eb4175-91d0-4c61-a471-2d5d0648f8a6",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-5983185cde2d",
|
||||
"~:woff1-file-id": "~u0fcf15c2-59c5-4566-9dc9-9acaf280a518",
|
||||
"~:created-at": "~m1750081469774",
|
||||
"~:font-family": "Bookinsanity Remake"
|
||||
},
|
||||
{
|
||||
"~:font-style": "italic",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-59831351af03",
|
||||
"~:font-weight": 400,
|
||||
"~:ttf-file-id": "~u517f4e27-b83f-4a6f-8753-8acaabc49ee9",
|
||||
"~:modified-at": "~m1750081469812",
|
||||
"~:otf-file-id": "~u12fe845f-afd2-453d-9ac6-6a899487ba9f",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-598318671138",
|
||||
"~:woff1-file-id": "~u53e0cb17-788e-4dae-aa7c-28f090f87968",
|
||||
"~:created-at": "~m1750081469812",
|
||||
"~:font-family": "Bookinsanity Remake"
|
||||
},
|
||||
{
|
||||
"~:font-style": "normal",
|
||||
"~:team-id": "~u04868522-3ebf-81e8-8006-306b0c9b5f59",
|
||||
"~:font-id": "~u7d85a63e-18e7-809f-8006-59832d696634",
|
||||
"~:font-weight": 500,
|
||||
"~:ttf-file-id": "~u2d1ffeb6-e70b-4027-bbcc-910248ba45f8",
|
||||
"~:modified-at": "~m1750081492609",
|
||||
"~:otf-file-id": "~ubcc136ac-da48-4335-af5c-52abc4613490",
|
||||
"~:id": "~u434b0541-fa2f-802f-8006-59832eb23bb4",
|
||||
"~:woff1-file-id": "~u01338648-afcc-47aa-8aa7-600c9022bd9f",
|
||||
"~:created-at": "~m1750081492609",
|
||||
"~:font-family": "Mr Eaves SC Remake"
|
||||
}
|
||||
]
|
|
@ -23,9 +23,41 @@ export class BasePage {
|
|||
);
|
||||
}
|
||||
|
||||
static async mockFileMediaAsset(page, assetId, assetFilename, options) {
|
||||
const ids = Array.isArray(assetId) ? assetId : [assetId];
|
||||
|
||||
for (const id of ids) {
|
||||
const url = `**/assets/by-file-media-id/${id}`;
|
||||
|
||||
await page.route(url, (route) =>
|
||||
route.fulfill({
|
||||
path: `playwright/data/${assetFilename}`,
|
||||
status: 200,
|
||||
...options,
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static async mockAsset(page, assetId, assetFilename, options) {
|
||||
const ids = Array.isArray(assetId) ? assetId : [assetId];
|
||||
|
||||
for (const id of ids) {
|
||||
const url = `**/assets/by-id/${id}`;
|
||||
|
||||
await page.route(url, (route) =>
|
||||
route.fulfill({
|
||||
path: `playwright/data/${assetFilename}`,
|
||||
status: 200,
|
||||
...options,
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static async mockFileMediaAsset(page, assetId, assetFilename, options) {
|
||||
const ids = Array.isArray(assetId) ? assetId : [assetId];
|
||||
|
||||
for (const id of ids) {
|
||||
const url = `**/assets/by-file-media-id/${id}`;
|
||||
|
||||
|
@ -68,6 +100,15 @@ export class BasePage {
|
|||
return BasePage.mockConfigFlags(this.page, flags);
|
||||
}
|
||||
|
||||
async mockFileMediaAsset(assetId, assetFilename, options) {
|
||||
return BasePage.mockFileMediaAsset(
|
||||
this.page,
|
||||
assetId,
|
||||
assetFilename,
|
||||
options,
|
||||
);
|
||||
}
|
||||
|
||||
async mockAsset(assetId, assetFilename, options) {
|
||||
return BasePage.mockAsset(this.page, assetId, assetFilename, options);
|
||||
}
|
||||
|
|
|
@ -28,4 +28,25 @@ export class WasmWorkspacePage extends WorkspacePage {
|
|||
return window.wasmSetObjectsFinished;
|
||||
});
|
||||
}
|
||||
|
||||
static async mockGoogleFont(page, fontSlug, assetFilename, options = {}) {
|
||||
const url = new RegExp(`/internal/gfonts/font/${fontSlug}`);
|
||||
return await page.route(url, (route) =>
|
||||
route.fulfill({
|
||||
status: 200,
|
||||
path: `playwright/data/${assetFilename}`,
|
||||
contentType: "application/font-ttf",
|
||||
...options,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
async mockGoogleFont(fontSlug, assetFilename, options) {
|
||||
return WasmWorkspacePage.mockGoogleFont(
|
||||
this.page,
|
||||
fontSlug,
|
||||
assetFilename,
|
||||
options,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ test("Renders a file with solid, gradient and image fills", async ({
|
|||
}) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockAsset(
|
||||
await workspace.mockFileMediaAsset(
|
||||
[
|
||||
"1ebcea38-f1bf-8101-8006-4c8fd68e7c84",
|
||||
"1ebcea38-f1bf-8101-8006-4c8f579da49c",
|
||||
|
@ -51,7 +51,7 @@ test("Renders a file with solid, gradient and image fills", async ({
|
|||
test("Renders a file with strokes", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockAsset(
|
||||
await workspace.mockFileMediaAsset(
|
||||
[
|
||||
"202c1104-9385-81d3-8006-5074e4682cac",
|
||||
"202c1104-9385-81d3-8006-5074c50339b6",
|
||||
|
@ -69,3 +69,47 @@ test("Renders a file with strokes", async ({ page }) => {
|
|||
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
||||
test("Renders a file with mutliple strokes", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-multiple-strokes.json");
|
||||
|
||||
await workspace.goToWorkspace({
|
||||
id: "c0939f58-37bc-805d-8006-51cc78297208",
|
||||
pageId: "c0939f58-37bc-805d-8006-51cc78297209",
|
||||
});
|
||||
await workspace.waitForFirstRender();
|
||||
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
||||
test("Renders a file with shapes with multiple fills", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-multiple-fills.json");
|
||||
|
||||
await workspace.goToWorkspace({
|
||||
id: "c0939f58-37bc-805d-8006-51cd3a51c255",
|
||||
pageId: "c0939f58-37bc-805d-8006-51cd3a51c256",
|
||||
});
|
||||
await workspace.waitForFirstRender();
|
||||
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
||||
// TODO: update the screenshots for this test once Taiga #11325 is fixed
|
||||
// https://tree.taiga.io/project/penpot/task/11325
|
||||
test("Renders shapes taking into account blend modes", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-blend-modes.json");
|
||||
|
||||
await workspace.goToWorkspace({
|
||||
id: "c0939f58-37bc-805d-8006-51cdf8e18e76",
|
||||
pageId: "c0939f58-37bc-805d-8006-51cdf8e18e77",
|
||||
});
|
||||
await workspace.waitForFirstRender();
|
||||
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
|
@ -9,9 +9,7 @@ test.beforeEach(async ({ page }) => {
|
|||
]);
|
||||
});
|
||||
|
||||
test("Renders a file with texts", async ({
|
||||
page,
|
||||
}) => {
|
||||
test("Renders a file with texts", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-text.json");
|
||||
|
@ -24,9 +22,7 @@ test("Renders a file with texts", async ({
|
|||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
||||
test("Updates a text font", async ({
|
||||
page,
|
||||
}) => {
|
||||
test("Updates a text font", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-text.json");
|
||||
|
@ -42,4 +38,49 @@ test("Updates a text font", async ({
|
|||
const boldOption = fontStyle.getByText("bold").first();
|
||||
await boldOption.click();
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
test("Renders a file with texts that use google fonts", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-text-google-fonts.json");
|
||||
await workspace.mockGoogleFont(
|
||||
"ebgaramond",
|
||||
"render-wasm/assets/ebgaramond.ttf",
|
||||
);
|
||||
await workspace.mockGoogleFont("firacode", "render-wasm/assets/firacode.ttf");
|
||||
|
||||
await workspace.goToWorkspace({
|
||||
id: "434b0541-fa2f-802f-8006-5981e47bd732",
|
||||
pageId: "434b0541-fa2f-802f-8006-5981e47bd733",
|
||||
});
|
||||
await workspace.waitForFirstRender();
|
||||
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
||||
test("Renders a file with texts that use custom fonts", async ({ page }) => {
|
||||
const workspace = new WasmWorkspacePage(page);
|
||||
await workspace.setupEmptyFile();
|
||||
await workspace.mockGetFile("render-wasm/get-file-text-custom-fonts.json");
|
||||
await workspace.mockRPC(
|
||||
"get-font-variants?team-id=*",
|
||||
"render-wasm/get-font-variants-custom-fonts.json",
|
||||
);
|
||||
await workspace.mockAsset(
|
||||
"2d1ffeb6-e70b-4027-bbcc-910248ba45f8",
|
||||
"render-wasm/assets/mreaves.ttf",
|
||||
);
|
||||
await workspace.mockAsset(
|
||||
"69e76833-0816-49fa-8c7b-4b97c71c6f1a",
|
||||
"render-wasm/assets/nodesto-condensed.ttf",
|
||||
);
|
||||
|
||||
await workspace.goToWorkspace({
|
||||
id: "434b0541-fa2f-802f-8006-59827d964a9b",
|
||||
pageId: "434b0541-fa2f-802f-8006-59827d964a9c",
|
||||
});
|
||||
await workspace.waitForFirstRender();
|
||||
|
||||
await expect(workspace.canvas).toHaveScreenshot();
|
||||
});
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
Loading…
Add table
Add a link
Reference in a new issue