49 Commits

Author SHA1 Message Date
Marcos Paulo 6c553bd7ad chore: release 0.4.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:42:20 -03:00
Marcos Paulo 5c3f7c6382 chore: regenerate milestone screenshots
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:40:43 -03:00
Marcos Paulo 45639ca997 docs: agent runs spec, tasks, roadmap and agent docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:40:43 -03:00
Marcos Paulo ab6173a404 feat: agent runs with auto-versions, review and revert
Group an agent's editing calls into runs. Each page is saved as an auto
version before the run first touches it. The Agent view lists runs and
opens a review (id-paired diff, grouped by frame) with per-change undo,
Revert run and Accept all. The canvas outlines added, changed and
removed layers during review, and a toast announces a finished run.
Runs persist under runs/ and are pruned to the newest 50.

Also fixes version restore dropping variable, mode and token changes,
and stops lint_design advertising readOnlyHint (fix: true edits).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:40:43 -03:00
Marcos Paulo 7e325de1dd docs: handoff for the PaperCraft redesign work
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 09:45:19 -03:00
Marcos Paulo 3f8ef2c4ca docs: why Linux keeps the system window frame
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 01:06:00 -03:00
Marcos Paulo a760abda42 feat: icons in every context menu (pages, library, versions, variables, agent link, trash)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 01:02:19 -03:00
Marcos Paulo 4000960811 feat: icons in the home card menu
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:56:06 -03:00
Marcos Paulo 02bd90c601 feat: Present mode glides between frames; Share menu gets icons
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:55:07 -03:00
Marcos Paulo 90cbde7262 test: interface scale applies and the UI still draws
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:48:05 -03:00
Marcos Paulo 6c6b7c91a7 docs: shared-libs plan, feature ideas, compact workflow; palette UI scale
- docs/shared-libs.md: what PaperCraft and NotesCraft carry twice and the order to move it into craft-libs.
- docs/feature-ideas.md: ranked ideas, done and next.
- skills/papercraft: references/compact-workflow.md (pages and groups, compressing, design-code sync, few tokens, shared work).
- Command palette: Interface scale entries.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:45:13 -03:00
Marcos Paulo cbe23ed6d1 feat: merge concurrent edits to a shared page, agent activity pill, UI scale
Shared projects: when both a folder and the relay changed the same page since they
last agreed, the page is merged (objects by key, nodes by id, child lists as sets,
clashing new ids renumbered) against a base copy kept in .sync-base/, instead of
the last writer winning.

UI: animated "agent is working" pill and canvas glow, layer rows pop in, Settings
gets an interface scale, the toolbar dock stays inside the canvas, the duplicate
header gear is gone in the floating layout, the folded menu is one flat list,
Windows keeps rounded corners and the system shadow without a native frame.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:38:21 -03:00
Marcos Paulo 5e748b41d8 test: stopping a share detaches the folder and leaves the relay copy
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:20:32 -03:00
Marcos Paulo eda572dff4 feat: richer History/Comments/Agent views, export presets, web fixes
History: saved versions now work in the browser too (kept in the virtual
file system) and can be renamed. Comments: Open/Resolved/All filters, reopen
and delete. Agent: copy-agent-URL button, clear log, failed calls shown in
red; the browser build logs agent calls as well. The inspector's Export "+"
keeps export settings as one-click presets.

Web: the library probe no longer leaves Join shared / Share hidden after a
reload, the share dialog is a modal in the new style, the menu bar folds into
one "Menu" button when the canvas is narrow, the Updates page and empty-home
text no longer talk about native-only things. Verified in Chromium against
papercraft-relay: share, join by link, edits syncing both ways with the
native app.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 00:15:52 -03:00
Marcos Paulo ecf01733aa feat: remake the app UI from the PaperCraft redesign
Floating rounded panels, a shared component kit (buttons, chips, toggles,
selects, sliders), Lottie icon motion ported from NotesCraft, a remade home,
settings, command palette, confirm dialogs, updater, Present mode, and
History / Comments / Agent side views with saved versions.

Inspector gains Design/Prototype tabs, a drop-shadow Effects section and
prototype links that Present mode follows on click. Narrow windows keep the
canvas usable. Spec output (get_design_spec) now covers icons, svg, sizing
limits, tokens and component instances; adds a delete_pages tool.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 23:52:48 -03:00
Marcos Paulo 40d4bf3d6e docs: record the OpenDesign integration map and backlog
What OpenDesign ships, which parts are portable file formats and which are
Electron/Next.js-bound, what has landed here, and the ranked candidates for
the next slices (direction presets, craft rulebooks, question-form, pixel
diff wiring, plugin manifest reader).
2026-10-20 12:23:27 -03:00
Marcos Paulo 360f7a7d31 docs: add critique gate agent skill
Port the OpenDesign Critique Theater 5-panel contract into PaperCraft:
critic .4 / brand .2 / accessibility .2 / copy .2, designer weight 0,
composite threshold 8.0, max 3 rounds, ship_best fallback, and the
Shipped / Below threshold / Timed out / Interrupted / Degraded statuses.

lint_design and verify_code findings are hard evidence: an error caps the
owning panel at 3.9, a warning at 6.9, and the cap lifts once the finding
is gone. Contract inspired by nexu-io/open-design (Apache-2.0), written
against PaperCraft's own tools.
2026-10-20 12:23:27 -03:00
Marcos Paulo f580b29f4a feat: OpenDesign design-system package import/export
Import and export the OpenDesign design-system package format
(manifest.json + tokens.css + DESIGN.md, schema od-design-system-project/v1).

:root hex colors become variables, [data-theme="x"] blocks become modes and
every other value becomes a token. Two MCP tools: import_design_system
(project-wide, one undo step) and export_design_system (writes the three
files). New Tx::set_design_system keeps the replace in a single undo step and
moves or drops the fills that follow a variable.

Format reimplemented from the published description of nexu-io/open-design
(Apache-2.0); no upstream file copied, attribution in THIRD_PARTY.md.
Verified against the real bundled OpenDesign package: import -> export ->
re-import round-trips byte-stable.
2026-10-20 12:23:27 -03:00
Marcos Paulo 40dcc81ad2 chore: release 0.3.1 2026-10-17 20:01:04 -03:00
Marcos Paulo 5169fe6342 fix: resolve issues #1-#8 (side borders, align-self, min/max size, wavy/colored underline, cross-page layers, screenshot out path, feedback counts, nested component import) 2026-10-17 20:00:47 -03:00
Marcos Paulo fa0511bc94 chore: release 0.3.0 2026-10-17 18:45:33 -03:00
Marcos Paulo 3f37de39f8 feat: design system UI, grid/wrap layout, .fig import, frame diff, multi-target codegen, and AI design-to-code enforcer 2026-10-17 18:45:33 -03:00
Marcos Paulo edc0b818ff chore(deploy): roll out the library build
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 10:05:45 -03:00
Marcos Paulo ea6f1b3ac4 feat(relay): personal library mode, every project on every device
papercraft-relay --library lists every project in --data at /library and lets a
project be deleted (moved to .trash, kept on disk). A device that opens the site
joins the projects it lacks and shares its local ones, through the existing sync
loops. A deleted project answers 410 and lands in the other devices' trash; one the
server forgot (404 after it had synced) is kept locally and shared again, so losing
the server's disk never deletes anyone's work. Share controls are hidden in library
mode. Meant for a network-bounded, single-user deployment: there are no accounts.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 09:55:34 -03:00
Marcos Paulo 5f667a5ae9 feat(deploy): container image and K3s manifest for the web build
Dockerfile builds the wasm bundle and papercraft-relay, which serves the app, the
agent relay and shared projects (--data on a PV). craft-libs is a private git
dependency, so the build takes host-vendored crates as a build context.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 09:39:05 -03:00
Marcos Paulo 0b78bb1d85 fix(render): sample image textures with explicit gradients so the canvas shader validates on WebGPU
WebGPU rejects textureSample under non-uniform control flow (the branch on the
per-fragment kind), which left the canvas pipeline invalid and made the first
editor frame fail with Queue.Submit: Invalid CommandBuffer. Take dpdx/dpdy before
the branch and use textureSampleGrad; mip selection is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 09:39:04 -03:00
Marcos Paulo 110c99d47f feat: shared projects synced through the relay, from web and native
The relay (--data <dir>) stores shared projects under /p/{token}; every shared
project polls it and reconciles files through crate::vfs. Home screen gets
Share, Join shared, copy link and stop sharing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 08:42:52 -03:00
Marcos Paulo b43fa4fe43 fix(relay): accept public Host headers; the URL token is the credential
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 08:42:52 -03:00
Marcos Paulo 057ba30908 chore: release 0.2.0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 20:48:21 -03:00
Marcos Paulo 6e7b7e756a feat(web): remote-agent relay and browser gap closure (import, export, clipboard, thumbnails, persistence, backup)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 20:34:14 -03:00
Marcos Paulo 9e478207bb docs(specs): web relay for remote agents and browser gap closure
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 18:44:36 -03:00
Marcos Paulo 7c56a8d209 feat(web): projects in the browser (vfs over IndexedDB, home screen, autosave)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 18:41:01 -03:00
Marcos Paulo 01a01129be feat(ui): Figma-style inspector, flat menus, open projects folder, gentler ctrl+wheel zoom
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 18:37:54 -03:00
Marcos Paulo a1ba859aac feat(web): browser build (canvas + WebGPU shell), native-only deps gated for wasm32
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 18:37:54 -03:00
Marcos Paulo 7fdef386b7 chore: release 0.1.1 2026-10-13 11:59:27 -03:00
Marcos Paulo b3a2e6d6f4 feat(ui): custom title bar on Windows with menus, theme, drag and window buttons
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 11:22:28 -03:00
Marcos Paulo fdbb12aca5 docs(examples): Interview design-system and page build scripts
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 17:07:38 -03:00
Marcos Paulo b31483c70d feat(ui): Theme menu in the egui menu bar so Windows/Linux can pick Catppuccin
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 17:02:34 -03:00
Marcos Paulo ba8074a850 build(windows): package papercraft for Windows (MSI, portable zip, cli zip) 2026-10-12 13:26:36 -03:00
Marcos Paulo bbb1256313 fix(mcp): multi-var shorthand, text-transform, var() in svg markup, icon recolor via color
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 12:52:53 -03:00
Marcos Paulo f303d08467 feat: import_components across pages; Design tab feedback list, variable add/delete, tokens; layers search; agent activity hint
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 12:39:57 -03:00
Marcos Paulo d3b43066cd feat: feedback notes for agents, scroll-to-layer, box-shadow, design tokens, tables, instance by name
Feedback: notes on layers (inspector box, amber badges, get/add/resolve_feedback, openFeedback in
get_basic_info). Canvas selection unfolds and scrolls the layers panel. box-shadow renders; set_tokens
adds non-color tokens substituted into var(--name) values; table/tr/td lay out as flex rows;
x-paper-instance takes component="Name" and overrides='{"Layer":"text"}'.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 12:35:28 -03:00
Marcos Paulo 53b8dc470b feat: rebrand to PaperCraft; variable modes, lint_design, Design tab, icon, docs and skills
Product, crate and binaries are now PaperCraft/papercraft (papercraft-cli, papercraft-mcp);
projects, icon sets and theme in the old paper-rs locations are still read and .paper-rs files
still open. set_variables {mode} and set_variable_mode switch whole themes; lint_design checks
contrast, type scale, 4px grid, touch targets, layer names and hard-coded colors; get_variables
exports css/json tokens; the sidebar gets a Design tab for variables, modes and components.
New app icon, README, docs, ROADMAP and agent skills.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 12:08:55 -03:00
Marcos Paulo 810a077bf5 feat(mcp): color variables, components and instances, open icon sets
set_variables/get_variables with var(--name) fills that follow and undo; create_component,
create_instance, get_components and <x-paper-instance> with automatic overrides;
<x-paper-icon>, search_icons and paper-rs-cli icons add/list/search (Lucide, Tabler, Phosphor,
Heroicons, Material Symbols from npm, licences kept).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 11:47:20 -03:00
Marcos Paulo 3638a1c520 feat(cli): paper-rs-cli, the MCP tools from a shell
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 11:24:51 -03:00
Marcos Paulo dfb2316784 test: drop a redundant assertion
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 11:09:23 -03:00
Marcos Paulo 217241027c fix(ui): rename fields grab focus once; Catppuccin palette for panels
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 11:08:41 -03:00
Marcos Paulo 3667e916cd fix(ui): Catppuccin canvas, opaque sidebar and roomier inputs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 10:58:08 -03:00
Marcos Paulo 67c6ef83e4 build(macos): package paper-rs.app on a DMG, plus the MCP server zip
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 10:50:35 -03:00
296 changed files with 42691 additions and 1714 deletions
+7
View File
@@ -0,0 +1,7 @@
target/
analysis/
.git/
.worktrees/
web/pkg/
dist/
packaging/
+4
View File
@@ -1,4 +1,8 @@
analysis/raw/
target/
dist/
*.asar
app.asar.unpacked/
web/pkg/
.worktrees/
.oc-agents/
+22
View File
@@ -0,0 +1,22 @@
# Attribution
Bundled assets and where they come from. Ported code and dependency notices are in
[THIRD_PARTY.md](THIRD_PARTY.md).
| Path | Title | Author | Source | License |
|---|---|---|---|---|
| `assets/fonts/Inter-*.ttf`, `assets/fonts/OFL.txt` | Inter 4.1 (Regular, Medium, SemiBold, Bold, Italic, Bold Italic) | The Inter Project Authors | https://rsms.me/inter/ | SIL Open Font License 1.1 |
| `assets/app-icon/*` | PaperCraft app icon | PaperCraft contributors (original artwork; colors from the Catppuccin palette) | this repository | MIT OR Apache-2.0 |
## Palettes
The Catppuccin Latte, Frappé, Macchiato and Mocha themes use the colors of the
[Catppuccin](https://github.com/catppuccin/catppuccin) palette (MIT, Copyright (c) 2021 Catppuccin),
taken from the `craft-ui` crate of [craft-libs](https://github.com/storytold/craft-libs).
## Icon sets (not bundled)
`papercraft-cli icons add <set>` downloads open icon sets from the npm registry into the user's data
folder, each with its own license file: Lucide (ISC), Tabler (MIT), Phosphor
(MIT, https://github.com/phosphor-icons/core), Heroicons (MIT) and Material Symbols (Apache-2.0).
They are not part of this repository or of the release builds.
Generated
+447 -16
View File
@@ -222,7 +222,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90"
dependencies = [
"axum-core",
"base64 0.22.1",
"bytes",
"form_urlencoded",
"futures-util",
"http",
"http-body",
@@ -236,8 +238,13 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"serde_core",
"serde_json",
"serde_path_to_error",
"serde_urlencoded",
"sha1",
"sync_wrapper",
"tokio",
"tokio-tungstenite",
"tower",
"tower-layer",
"tower-service",
@@ -261,6 +268,12 @@ dependencies = [
"tower-service",
]
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "base64"
version = "0.23.1"
@@ -294,6 +307,15 @@ version = "2.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
[[package]]
name = "block-buffer"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [
"generic-array",
]
[[package]]
name = "block2"
version = "0.5.1"
@@ -431,8 +453,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06"
dependencies = [
"cfg-if",
"cpufeatures",
"rand_core",
"cpufeatures 0.3.1",
"rand_core 0.10.1",
]
[[package]]
@@ -507,6 +529,26 @@ dependencies = [
"crossbeam-utils",
]
[[package]]
name = "console_error_panic_hook"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
dependencies = [
"cfg-if",
"wasm-bindgen",
]
[[package]]
name = "console_log"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86919cef3e37b9356ccf54d4421208c17ecfda01beae61393e7ffd72916c0ef1"
dependencies = [
"log",
"web-sys",
]
[[package]]
name = "core-foundation"
version = "0.9.4"
@@ -517,6 +559,16 @@ dependencies = [
"libc",
]
[[package]]
name = "core-foundation"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "core-foundation-sys"
version = "0.8.7"
@@ -530,9 +582,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
dependencies = [
"bitflags 1.3.2",
"core-foundation",
"core-foundation 0.9.4",
"core-graphics-types",
"foreign-types",
"foreign-types 0.5.0",
"libc",
]
@@ -543,7 +595,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
dependencies = [
"bitflags 1.3.2",
"core-foundation",
"core-foundation 0.9.4",
"libc",
]
[[package]]
name = "cpufeatures"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
dependencies = [
"libc",
]
@@ -594,12 +655,28 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
[[package]]
name = "crypto-common"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "cursor-icon"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f"
[[package]]
name = "data-encoding"
version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
[[package]]
name = "data-url"
version = "0.3.2"
@@ -637,6 +714,16 @@ dependencies = [
"thiserror 2.0.21",
]
[[package]]
name = "digest"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer",
"crypto-common",
]
[[package]]
name = "dirs"
version = "6.0.0"
@@ -985,6 +1072,15 @@ dependencies = [
"tinyvec",
]
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared 0.1.1",
]
[[package]]
name = "foreign-types"
version = "0.5.0"
@@ -992,7 +1088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
dependencies = [
"foreign-types-macros",
"foreign-types-shared",
"foreign-types-shared 0.3.1",
]
[[package]]
@@ -1006,6 +1102,12 @@ dependencies = [
"syn 3.0.7",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "foreign-types-shared"
version = "0.3.1"
@@ -1109,6 +1211,16 @@ dependencies = [
"slab",
]
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "gethostname"
version = "1.1.0"
@@ -1140,7 +1252,7 @@ dependencies = [
"cfg-if",
"libc",
"r-efi 6.0.0",
"rand_core",
"rand_core 0.10.1",
]
[[package]]
@@ -1339,13 +1451,29 @@ dependencies = [
"want",
]
[[package]]
name = "hyper-tls"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
"hyper",
"hyper-util",
"native-tls",
"tokio",
"tokio-native-tls",
"tower-service",
]
[[package]]
name = "hyper-util"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff"
dependencies = [
"base64",
"base64 0.23.1",
"bytes",
"futures-channel",
"futures-util",
@@ -2017,6 +2145,23 @@ dependencies = [
"thiserror 2.0.21",
]
[[package]]
name = "native-tls"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
dependencies = [
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "ndk"
version = "0.9.0"
@@ -2485,6 +2630,49 @@ version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "openssl"
version = "0.10.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
dependencies = [
"bitflags 2.13.2",
"cfg-if",
"foreign-types 0.3.2",
"libc",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "openssl-probe"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
[[package]]
name = "openssl-sys"
version = "0.9.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "option-ext"
version = "0.2.0"
@@ -2520,12 +2708,15 @@ dependencies = [
]
[[package]]
name = "paper-rs"
version = "0.1.0"
name = "papercraft"
version = "0.4.0"
dependencies = [
"arboard",
"axum",
"base64 0.23.1",
"bytemuck",
"console_error_panic_hook",
"console_log",
"craft-ui",
"dirs",
"egui",
@@ -2535,6 +2726,7 @@ dependencies = [
"fastrand",
"i_overlay",
"image",
"js-sys",
"log",
"lyon",
"miniz_oxide 0.9.1",
@@ -2548,14 +2740,21 @@ dependencies = [
"resvg",
"rfd",
"rmcp",
"semver",
"serde",
"serde_json",
"tokio",
"tokio-tungstenite",
"tokio-util",
"ttf-parser",
"usvg",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"web-time",
"wgpu",
"winit",
"winresource",
]
[[package]]
@@ -2716,6 +2915,15 @@ dependencies = [
"zerovec",
]
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]]
name = "presser"
version = "0.3.1"
@@ -2802,6 +3010,16 @@ version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]]
name = "rand"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41"
dependencies = [
"rand_chacha",
"rand_core 0.9.5",
]
[[package]]
name = "rand"
version = "0.10.3"
@@ -2810,7 +3028,26 @@ checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af"
dependencies = [
"chacha20",
"getrandom 0.4.3",
"rand_core",
"rand_core 0.10.1",
]
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core 0.9.5",
]
[[package]]
name = "rand_core"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
dependencies = [
"getrandom 0.3.4",
]
[[package]]
@@ -2952,7 +3189,7 @@ version = "0.13.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029"
dependencies = [
"base64",
"base64 0.23.1",
"bytes",
"futures-core",
"futures-util",
@@ -2960,15 +3197,19 @@ dependencies = [
"http-body",
"http-body-util",
"hyper",
"hyper-tls",
"hyper-util",
"js-sys",
"log",
"native-tls",
"percent-encoding",
"pin-project-lite",
"rustls-pki-types",
"serde",
"serde_json",
"sync_wrapper",
"tokio",
"tokio-native-tls",
"tokio-util",
"tower",
"tower-http",
@@ -3041,7 +3282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5023804cbe0304cbe06197ac16e645a0a0d0ffa2953bf735c15c2fa0213350"
dependencies = [
"async-trait",
"base64",
"base64 0.23.1",
"bytes",
"chrono",
"futures",
@@ -3052,7 +3293,7 @@ dependencies = [
"pastey",
"pin-project-lite",
"process-wrap",
"rand",
"rand 0.10.3",
"reqwest",
"schemars",
"serde",
@@ -3129,12 +3370,27 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "rustls-pki-types"
version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
dependencies = [
"zeroize",
]
[[package]]
name = "rustversion"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
[[package]]
name = "ryu"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
[[package]]
name = "same-file"
version = "1.0.6"
@@ -3144,6 +3400,15 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "schannel"
version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "schemars"
version = "1.2.2"
@@ -3195,6 +3460,29 @@ dependencies = [
"tiny-skia 0.11.4",
]
[[package]]
name = "security-framework"
version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
dependencies = [
"bitflags 2.13.2",
"core-foundation 0.10.1",
"core-foundation-sys",
"libc",
"security-framework-sys",
]
[[package]]
name = "security-framework-sys"
version = "2.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "self_cell"
version = "1.3.0"
@@ -3261,6 +3549,49 @@ dependencies = [
"zmij",
]
[[package]]
name = "serde_path_to_error"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
dependencies = [
"itoa",
"serde",
"serde_core",
]
[[package]]
name = "serde_spanned"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c"
dependencies = [
"serde_core",
]
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
dependencies = [
"form_urlencoded",
"itoa",
"ryu",
"serde",
]
[[package]]
name = "sha1"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8"
dependencies = [
"cfg-if",
"cpufeatures 0.2.17",
"digest",
]
[[package]]
name = "shlex"
version = "2.0.1"
@@ -3522,6 +3853,19 @@ dependencies = [
"syn 3.0.7",
]
[[package]]
name = "tempfile"
version = "3.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand",
"getrandom 0.3.4",
"once_cell",
"rustix 1.1.5",
"windows-sys 0.52.0",
]
[[package]]
name = "termcolor"
version = "1.4.1"
@@ -3679,6 +4023,16 @@ dependencies = [
"syn 3.0.7",
]
[[package]]
name = "tokio-native-tls"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
dependencies = [
"native-tls",
"tokio",
]
[[package]]
name = "tokio-stream"
version = "0.1.19"
@@ -3690,6 +4044,18 @@ dependencies = [
"tokio",
]
[[package]]
name = "tokio-tungstenite"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c"
dependencies = [
"futures-util",
"log",
"tokio",
"tungstenite",
]
[[package]]
name = "tokio-util"
version = "0.7.20"
@@ -3704,6 +4070,21 @@ dependencies = [
"tokio",
]
[[package]]
name = "toml"
version = "1.1.8+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20489e00e4d8741d6be680764cc12e270655e375a20d1011e844a9c3379e678d"
dependencies = [
"indexmap",
"serde_core",
"serde_spanned",
"toml_datetime",
"toml_parser",
"toml_writer",
"winnow",
]
[[package]]
name = "toml_datetime"
version = "1.1.2+spec-1.1.0"
@@ -3734,6 +4115,12 @@ dependencies = [
"winnow",
]
[[package]]
name = "toml_writer"
version = "1.1.3+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770"
[[package]]
name = "tower"
version = "0.5.3"
@@ -3823,6 +4210,22 @@ version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
[[package]]
name = "tungstenite"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8"
dependencies = [
"bytes",
"data-encoding",
"http",
"httparse",
"log",
"rand 0.9.5",
"sha1",
"thiserror 2.0.21",
]
[[package]]
name = "type-map"
version = "0.5.1"
@@ -3832,6 +4235,12 @@ dependencies = [
"rustc-hash 2.1.3",
]
[[package]]
name = "typenum"
version = "1.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
[[package]]
name = "unicode-bidi"
version = "0.3.18"
@@ -3892,7 +4301,7 @@ version = "0.48.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "977d0a4abdef933f424a99fe09f95576e089b90aebc6f016a3bc813762493e91"
dependencies = [
"base64",
"base64 0.23.1",
"data-url",
"flate2",
"fontdb",
@@ -3937,6 +4346,12 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vello_common"
version = "0.1.0"
@@ -4732,7 +5147,7 @@ dependencies = [
"calloop 0.13.0",
"cfg_aliases",
"concurrent-queue",
"core-foundation",
"core-foundation 0.9.4",
"core-graphics",
"cursor-icon",
"dpi",
@@ -4778,6 +5193,16 @@ dependencies = [
"memchr",
]
[[package]]
name = "winresource"
version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2bc6d36480b829272a5bdabf08e6dca8004761c1da7e35efef800540c66221b"
dependencies = [
"toml",
"version_check",
]
[[package]]
name = "wit-bindgen"
version = "0.57.1"
@@ -4923,6 +5348,12 @@ dependencies = [
"synstructure",
]
[[package]]
name = "zeroize"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879"
[[package]]
name = "zerotrie"
version = "0.2.5"
+54 -14
View File
@@ -1,35 +1,43 @@
[package]
name = "paper-rs"
version = "0.1.0"
name = "papercraft"
version = "0.4.0"
edition = "2024"
rust-version = "1.95"
description = "A native infinite-canvas app for planning, working and sketching"
license = "MIT OR Apache-2.0"
[lib]
name = "paper_rs"
name = "papercraft"
path = "src/lib.rs"
[[bin]]
name = "paper-rs"
name = "papercraft"
path = "src/main.rs"
[[bin]]
name = "paper-rs-mcp"
path = "src/bin/paper-rs-mcp.rs"
name = "papercraft-mcp"
path = "src/bin/papercraft-mcp.rs"
[[bin]]
name = "papercraft-cli"
path = "src/bin/papercraft-cli.rs"
[[bin]]
name = "papercraft-relay"
path = "src/bin/papercraft-relay.rs"
[dependencies]
egui = "0.36"
egui-wgpu = "0.36"
egui-winit = "0.36"
wgpu = "30"
winit = "0.30"
lyon = "1"
ttf-parser = "0.25"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["float_roundtrip"] }
semver = "1"
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp"] }
pollster = "0.4"
web-time = "1"
bytemuck = { version = "1", features = ["derive"] }
log = "0.4"
env_logger = "0.11"
@@ -40,22 +48,32 @@ craft-ui = { version = "0.1.0", git = "https://git.marcospaulo.dev.br/masi/craft
i_overlay = "9.0.1"
miniz_oxide = "0.9.1"
usvg = "0.48"
arboard = { version = "3.6.1", features = ["image-data"] }
rmcp = { version = "3.5.1", default-features = false, features = ["server", "base64", "transport-streamable-http-server", "transport-io", "client", "transport-streamable-http-client-reqwest"] }
tokio = { version = "1", features = ["rt-multi-thread", "net", "sync", "macros", "time", "io-std"] }
axum = { version = "0.8", default-features = false, features = ["http1", "tokio"] }
tokio-util = "0.7"
resvg = "0.48"
tokio = { version = "1", features = ["sync"] }
base64 = "0.23"
[build-dependencies]
winresource = "0.1"
[profile.release]
debug = false
# Browser bundle only (`web/build.sh`): size over compile time. Native release is untouched.
[profile.web]
inherits = "release"
lto = true
codegen-units = 1
panic = "abort"
opt-level = "z"
[profile.dev.package."*"]
opt-level = 2
[dev-dependencies]
resvg = "0.48"
rmcp = { version = "3.5.1", default-features = false, features = ["transport-child-process"] }
reqwest = { version = "0.13", default-features = false }
# The relay test drives a fake tab over a real WebSocket; same version axum's `ws` uses.
tokio-tungstenite = "0.29"
[target.'cfg(target_os = "macos")'.dependencies]
muda = { version = "0.21", default-features = false }
@@ -63,3 +81,25 @@ objc2 = "0.6"
objc2-app-kit = "0.3"
objc2-foundation = "0.3"
raw-window-handle = "0.6"
# Native only: the OS clipboard and the MCP HTTP server do not exist in the browser.
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
egui-winit = "0.36"
winit = "0.30"
arboard = { version = "3.6.1", features = ["image-data"] }
rmcp = { version = "3.5.1", default-features = false, features = ["server", "base64", "transport-streamable-http-server", "transport-io", "client", "transport-streamable-http-client-reqwest"] }
tokio = { version = "1", features = ["rt-multi-thread", "net", "sync", "macros", "time", "io-std", "fs"] }
axum = { version = "0.8", default-features = false, features = ["http1", "tokio", "ws", "json", "query"] }
tokio-util = "0.7"
# Shared-project sync; the system TLS stack so https servers work without bundling one.
reqwest = { version = "0.13", default-features = false, features = ["native-tls"] }
# Browser build (`src/web.rs`): canvas + WebGPU/WebGL surface, DOM events instead of winit.
[target.'cfg(target_arch = "wasm32")'.dependencies]
wgpu = { version = "30", features = ["webgl"] }
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
js-sys = "0.3"
console_error_panic_hook = "0.1"
console_log = "1"
web-sys = { version = "0.3", features = ["Window", "Document", "Element", "HtmlElement", "HtmlCanvasElement", "KeyboardEvent", "PointerEvent", "WheelEvent", "ClipboardEvent", "DataTransfer", "MediaQueryList", "Location", "Performance", "Navigator", "Clipboard", "CssStyleDeclaration", "console", "WebSocket", "MessageEvent", "CloseEvent", "ErrorEvent", "Storage", "Crypto", "DragEvent", "FileList", "File", "Blob", "Request", "RequestInit", "Response"] }
+48
View File
@@ -0,0 +1,48 @@
# PaperCraft redesign: handoff
Last updated 2026-10-21. Branch `debrand`, pushed to `origin` (`masi/papercraft`). Latest commit when this was written: `3f8ef2c`.
## The goal
Port the PaperCraft redesign (the `PaperCraft` design file) into the egui app and remake all the UI. A Stop hook keeps judging that goal "not met"; the list below is what is actually left, so the next session does not have to re-derive it.
## What is done
* Design file `~/Documents/paper-rs/PaperCraft` (pages `Design System`, `Redesign`, `Redesign (from AI spec)`): built earlier. The dead "+" next to the Layer and Code & AI Handoff headings was removed from all three pages on 2026-10-21. Backup of the file before that edit: `/private/tmp/claude-501/pc-work/PaperCraft.backup` (temp, may be gone).
* App UI: floating rounded panels, shared component kit (`src/ui/kit.rs`), Lottie icon motion (`src/lottie`, `src/ui/lottie_icon.rs`, `src/ui/motion.rs`), home, trash, settings (theme, interface scale, animations), command palette, confirm modals, updater, Present mode (arrow keys, prototype links, camera glide between frames), History/Comments/Agent side views, inspector with Design/Prototype tabs, Effects (drop shadow), export presets, icons in the Share menu and every context menu.
* Agent feedback: animated "working" pill in the top bar and a pulsing ring around the canvas while an agent has called a tool in the last 6 seconds (`agent_pill`, `agent_glow` in `src/ui/mod.rs`).
* Sharing: file sync through the relay (`src/sync.rs`) now merges a page when both sides changed it (`src/merge.rs`, base copies in `.sync-base/`). Verified between two browser sessions and the native app against `papercraft-relay`.
* Web build: `sh web/build.sh`, serve with `papercraft-relay --static web --data <dir>`. Fixed the library probe hiding Share/Join after reload, the share dialog is a modal, the menu bar folds into one "Menu" when the canvas is under 1100px, saved versions work in the browser.
* Skills: `craft-skills/skills/papercraft` (new `references/compact-workflow.md`), `skills-papercraft/skills/*` (project layout, design-to-code pointers). Both repos pushed to `main`.
* Plans: `docs/shared-libs.md` (what to move into `craft-libs`), `docs/feature-ideas.md` (ranked ideas).
## What is not done, and why
1. **`/Applications/PaperCraft.app` is the older build.** The user has PaperCraft open for other work and said not to close it. `tools/install-local.sh` asks a running app to quit, so it was never run against `/Applications`. The final build is installed at `~/Applications/PaperCraft.app` (installed with `PAPERCRAFT_APP_PATH="$HOME/Applications/PaperCraft.app" bash tools/install-local.sh --no-launch`). To finish: the user closes PaperCraft, then `bash tools/install-local.sh`.
2. **Linux rounded corners:** not built. Needs a transparent surface, a paint callback that clears the four corners with replace blending, and `drag_resize_window` edge resizing; none can be tested without a Linux desktop. Reasoning is in `docs/feature-ideas.md` item 9. Windows is done (`with_corner_preference(Round)` and undecorated shadow, compile-checked only).
3. **History, Agent, Comments** show only the project's own data. Richer content needs backend features that do not exist (server-side history, an agent-activity feed, threaded comments with replies from people). See `docs/feature-ideas.md`.
4. **Layer and Code "+"**: the user chose to remove them from the design, so design and app match.
5. Smart transitions that animate matching layers between frames, layer blur, presence on shared projects, version compare: listed in `docs/feature-ideas.md`, not built.
6. **Shared libraries:** nothing moved. `docs/shared-libs.md` has the plan; it touches `craft-libs` and NotesCraft and needs the user's go-ahead.
## Rules the user set
* Never close, quit or reinstall over the user's running PaperCraft. Memory: `dont-close-users-papercraft`. Launch test builds with their own `PAPERCRAFT_HOME` and `PAPERCRAFT_MCP_PORT`, keep the PID from `$!`, kill only that PID. Never `pkill` by name.
* Commit and push only when asked (they have asked for pushes of this work). No `--no-verify`.
* Do not click macOS permission prompts for the user. Launching the app binary directly with `PAPERCRAFT_HOME` set to a temp folder avoids the Documents prompt.
* Caveman terse chat style; normal prose in files and commits.
## How to verify
* `cargo test --no-fail-fast`. `ten_thousand_elements_cache_and_pan_without_rework` (tests/perf.rs) is a timing test and fails when the machine is busy; run it alone.
* `cargo check --lib --target wasm32-unknown-unknown` and `cargo check --lib --target x86_64-pc-windows-msvc` for the other platforms.
* On screen: launch `target/debug/papercraft` (or the installed binary) with `PAPERCRAFT_HOME=<tmp> PAPERCRAFT_MCP_PORT=<free port>`, find its window with `osascript ... get {position, size} of window 1` for that PID, and use the helpers in `/private/tmp/claude-501/pc-work/` (`click`, `drag` Swift binaries; may be gone). Drive the app with `papercraft-cli` and `PAPERCRAFT_MCP_PORT`. Note `papercraft-cli call <tool> -` reads stdin; pass `'{}'` for no arguments.
* Browser: Playwright's Chromium (installed under `~/Library/Caches/ms-playwright`), script in `/private/tmp/claude-501/pc-work/pw/` (`lib.mjs` launches with `--use-angle=swiftshader --enable-unsafe-swiftshader --ignore-gpu-blocklist --enable-unsafe-webgpu`). The browser MCP tool's own Chrome link is broken.
## Gotchas
* egui tests need `out.textures_delta.clear()` after each frame.
* `cargo fmt` reformats the whole crate, including files with the user's uncommitted edits.
* The relay port 8787 may be taken by another local service; use `--listen 127.0.0.1:18787`.
* A `.share` file in a project folder marks it shared; `.sync-base/` holds merge bases and never syncs.
* Home cards open on double-click.
+8 -2
View File
@@ -1,6 +1,6 @@
# Progress
Last updated: 2026-10-11.
Last updated: 2026-10-21.
## Phase 3: local-first design and whiteboard tool
@@ -34,7 +34,7 @@ are credited in `THIRD_PARTY.md`.
to that page's own document and history (`Editor::with_page`) without switching the view.
* **Bridge** (`paper-rs-mcp`): rmcp stdio server that lists tools offline and relays calls to
the app over HTTP, reconnecting after app restarts.
* **Tools** (`src/mcp/tools.rs`): Paper's names and argument shapes where there is an
* **Tools** (`src/mcp/tools.rs`): 53 tools, using Paper's names and argument shapes where there is an
equivalent (see README), plus `create_shape`, `select_nodes`, `undo`, `redo`.
`write_html` (`src/mcp/{html,css}.rs`, `exec.rs` `Builder`) maps flex/block layout onto auto
layout with CSS stretch semantics, text styles and rich-text runs, backgrounds, gradients,
@@ -76,6 +76,12 @@ are credited in `THIRD_PARTY.md`.
* **Not carried over**: comments, design tokens, AI image generation, video export, teams;
moving layers between pages; remote image URLs (see README Known gaps).
### 2026-10-21: Agent runs and change review
* Agent editing calls group into runs, snapshot each edited page as `Before agent run N`, and end on 30 seconds idle, `finish_working_on_nodes`, or project switch. Runs persist under `runs/` and keep the newest 50.
* Agent view lists runs and supports review, whole-run revert, per-change undo and accept all. Review adds canvas outlines and a finish toast; palette commands review or revert the last run.
* Id-paired page diffs power review; History version compare UI remains todo. Completed with full restore (including variables, modes and tokens), tool edit classification, and wasm support.
### P6 notes
* **Export** (`io/export.rs`): scope = selection, each frame, page or all pages; format =
+288 -268
View File
@@ -1,219 +1,280 @@
# paper-rs
<h1 align="center">PaperCraft</h1>
A native Rust infinite canvas for planning, working and sketching. It is modeled on the
behavior of [Paper](https://paper.design) and built clean-room on `wgpu` + `winit` + `egui`.
<p align="center">
<b>Design and whiteboarding on an infinite canvas; a native, local-first, agent-driven design tool, built in pure Rust.</b>
</p>
![paper-rs main window](docs/screenshots/app_demo.png)
<p align="center">
Frames, auto layout, components, variables and icons, plus a hand-drawn whiteboard mode,<br>
in a native app written entirely in Rust. Open source, offline, and drivable by AI agents.
</p>
A local-first design and whiteboard tool. Projects are folders of pages; each page is an
infinite canvas with frames, groups, components and instances, auto layout and constraints,
vector paths and booleans, gradients and image fills, rich text, smart guides, and
pressure-sensitive ink — plus a whiteboard mode: hand-drawn (rough.js-style) shapes, arrows that
bind to shapes and re-route, elbow connectors, sticky notes, a laser pointer and a shape
library. Everything autosaves, and exports to PNG, SVG and PDF; Excalidraw files and SVG import.
<p align="center">
<img alt="Status: early alpha" src="https://img.shields.io/badge/status-early%20alpha-d69e2e?style=flat-square">
<img alt="100% Rust" src="https://img.shields.io/badge/100%25-Rust-b7410e?style=flat-square&logo=rust">
<img alt="Native on egui and wgpu" src="https://img.shields.io/badge/egui%20%C2%B7%20wgpu-native-2f7bf5?style=flat-square">
<img alt="MCP server and CLI for agents" src="https://img.shields.io/badge/agents-MCP%20%2B%20CLI-555555?style=flat-square">
<img alt="License: MIT OR Apache-2.0" src="https://img.shields.io/badge/license-MIT%20%2F%20Apache--2.0-3a3a3a?style=flat-square">
</p>
![Figma-core features](docs/screenshots/milestone3_figma_core.png)
<br>
> **Clean-room note.** `analysis/PAPER_ARCHITECTURE.md` documents how Paper Desktop 0.5.15 is
> put together, from a licensed install. The Electron package turned out to be a thin shell
> around the hosted web editor. paper-rs re-implements *behavior* only. No Paper code,
> shaders, icons, fonts or assets are used or committed. The UI and canvas text use
> [Inter](https://rsms.me/inter/) 4.1 (SIL OFL 1.1), bundled in `assets/fonts/`.
<p align="center">
<img src="docs/screenshots/app_demo.png" alt="PaperCraft with a launch plan: a Week plan frame with sticky notes and a progress bar, a Sketches frame with hand-drawn shapes, the Layers panel and the Design inspector" width="100%">
<br>
<sub>A planning board: frames, sticky notes, a progress bar, hand-drawn sketches, the Layers panel and the Design inspector.</sub>
</p>
## Reverse-engineered origin
<p align="center">
<a href="#features">Features</a> ·
<a href="#drive-it-with-agents">Agents</a> ·
<a href="#design-systems-variables-components-icons">Design systems</a> ·
<a href="#get-started">Get started</a> ·
<a href="#keyboard-shortcuts">Shortcuts</a> ·
<a href="#status">Status</a> ·
<a href="#downloads">Downloads</a> ·
<a href="#license-and-credits">License</a>
</p>
paper-rs is an independent, clean-room-style reimplementation. It was reverse engineered from
[Paper](https://paper.design) by studying the behavior of the Paper desktop app with
[REA](https://github.com/morluto/rea) and Claude Code. It is not affiliated with or endorsed by
Paper. No original Paper code or assets are included in this repository.
<br>
## Projects
<table>
<tr>
<td width="25%" valign="top">
<h3>Local-first</h3>
Projects are plain folders of JSON in <code>~/Documents/papercraft</code>. Autosave with atomic writes, no account, no cloud.
</td>
<td width="25%" valign="top">
<h3>Native and fast</h3>
egui on wgpu (Metal, Vulkan, DX12). No Electron, no web view. Cached tessellation: a frame with 10k visible nodes draws in about 3 ms.
</td>
<td width="25%" valign="top">
<h3>Design and whiteboard</h3>
Auto layout, components and variables next to hand-drawn shapes, bound arrows, sticky notes and a laser pointer, on the same canvas.
</td>
<td width="25%" valign="top">
<h3>Agent-ready</h3>
40 MCP tools and a shell CLI. Agents write HTML into layers, screenshot the result and lint it, one undo step per call.
</td>
</tr>
</table>
paper-rs opens on a **home screen** of your projects (recents grid with thumbnails, New, Import,
and Rename / Duplicate / Move to Trash from each card's ⋯ menu or right-click; restore from
Trash). Each project is a plain folder in `~/Documents/paper-rs/<name>/` holding `project.json`
and one JSON file per page in `pages/`. Work is autosaved about a second after each change with
crash-safe atomic writes; files are versioned and older versions migrate on load. Set
`PAPER_RS_HOME` to use another folder.
<br>
A project has any number of **pages** (Pages list at the top of the left sidebar: + to add,
double-click to rename, right-click to duplicate or delete, drag to reorder). Each page is its
own infinite canvas with its own undo history and view. Copy and paste works between pages and
between projects.
## Features
## Build and run
<table>
<tr>
<td width="50%" valign="top">
<img src="docs/screenshots/milestone3_figma_core.png" alt="A design with frames, auto layout, a component and its instances, and vector shapes" width="100%">
<br>
<h3>Design tools</h3>
Frames with clipping, groups, components with instances and per-property overrides, auto layout (direction, gap, padding, hug, fill, wrap, space-between), constraints, the Pen with Bézier editing, boolean operations, gradients, image fills, strokes, per-corner radii, opacity and blend modes, rich text, smart guides and measurements, align and distribute.
</td>
<td width="50%" valign="top">
<img src="docs/screenshots/milestone4_whiteboard.png" alt="A whiteboard with hand-drawn shapes, bound arrows, an elbow connector and sticky notes" width="100%">
<br>
<h3>A whiteboard that sketches</h3>
Hand-drawn (rough.js-style) rectangles, ellipses, diamonds and lines, arrows that bind to shapes and re-route when they move, elbow connectors, sticky notes, freehand ink with pressure, a laser pointer and a shape library.
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="docs/screenshots/milestone5_inspector.png" alt="The inspector with position, size, constraints, auto layout, fills, strokes and export sections" width="100%">
<br>
<h3>Inspector, layers and a palette</h3>
A sectioned inspector, a layers tree you can drag to reorder or re-parent, 100+ keyboard shortcuts, and a command palette over every action, page and layer (⌘K).
</td>
<td width="50%" valign="top">
<img src="docs/screenshots/milestone6_svg_import.png" alt="An imported SVG on the canvas" width="100%">
<br>
<h3>Import and export</h3>
Export a selection, each frame, a page or the whole project to PNG (1 to 4x), SVG or vector PDF. Import <code>.excalidraw</code> scenes and libraries, SVG and images; paste between pages, projects and apps.
</td>
</tr>
</table>
You need Rust 1.95 or newer (`rust-version` in `Cargo.toml`; the latest stable is recommended). Install it with [rustup](https://rustup.rs).
### Themes
System, Light, Dark and the four Catppuccin flavours: Latte, Frappé, Macchiato and Mocha. Pick one in **View › Theme** or search "theme" in the ⌘K palette.
### Projects and pages
PaperCraft opens on a **home screen** of your projects (recents grid with thumbnails; New, Import, and Rename, Duplicate or Move to Trash from each card's ⋯ menu or right-click; restore from Trash). A project is a folder in `~/Documents/papercraft/<name>/` with `project.json` and one JSON file per page in `pages/`. Work autosaves about a second after each change with crash-safe atomic writes; files are versioned and older versions migrate on load. Set `PAPERCRAFT_HOME` to use another folder. If you used the app under its earlier name, `~/Documents/paper-rs` is still read when it is the only one that exists.
Each project has any number of **pages** (the Pages list at the top of the left sidebar: + to add, double-click to rename, right-click to duplicate or delete, drag to reorder). Each page is its own infinite canvas with its own undo history and view. Copy and paste works between pages and projects.
### File formats
| Format | Use |
|---|---|
| Project folder (`project.json` + `pages/*.json`) | The native format. Plain, versioned JSON. |
| `.papercraft` | A single-file document (`papercraft FILE.papercraft`, not autosaved). `--import` turns it into a project. |
| `.paper-rs` | The earlier single-file extension. Old files still open. |
| PNG, SVG, PDF | Export: selection, frames, page or all pages. PDF is vector, with gradients, images and blend modes. |
| `.excalidraw`, `.excalidrawlib`, SVG, images | Import (drag and drop, ⌘O, or `--import`). |
## Drive it with agents
![A sign-in screen written by an agent through write_html](docs/screenshots/milestone7_mcp.png)
PaperCraft serves the [Model Context Protocol](https://modelcontextprotocol.io) while it runs, so agents such as Claude Code and Codex can read and design on the open canvas. Every tool call runs through the editor like a user edit: one undo step per call, and the window repaints immediately. Tool names and arguments follow other design-tool MCP servers where there is an equivalent, so prompts written for them carry over.
<table>
<tr>
<td width="33%" valign="top">
<img src="docs/screenshots/agent_signin.png" alt="A dark sign-in screen built from a component, an icon and variables" width="100%">
<br><sub>A sign-in screen: variables, an icon and a component instance.</sub>
</td>
<td width="67%" valign="top">
<img src="docs/screenshots/agent_dashboard.png" alt="A dashboard with a sidebar, three stat cards and a bar chart" width="100%">
<br><sub>A dashboard written in one <code>write_html</code> call, then checked with <code>lint_design</code>.</sub>
</td>
</tr>
<tr>
<td colspan="2" valign="top">
<img src="docs/screenshots/agent_landing.png" alt="A landing page with a hero and three feature cards" width="100%">
<br><sub>A landing page: hero, call to action and feature cards, all colors from variables.</sub>
</td>
</tr>
</table>
* **Streamable HTTP** (built into the app): `http://127.0.0.1:29980/mcp`. Loopback only; requests from browsers (with an `Origin` header) and foreign `Host` headers are rejected. `PAPERCRAFT_MCP_PORT=NNNN` changes the port; `PAPERCRAFT_MCP=0` turns the server off.
* **stdio**: `papercraft-mcp` (built next to `papercraft`) relays stdio to the running app. It lists the tools even when the app is closed, and tells the agent to start PaperCraft if a call can't reach it.
* **Shell**: `papercraft-cli` calls the same tools, so an agent with a terminal needs no schemas in its context.
### Claude Code
```sh
# HTTP (the app must be running)
claude mcp add --transport http --scope user papercraft http://127.0.0.1:29980/mcp
# or stdio through the bridge
claude mcp add --scope user papercraft -- /path/to/papercraft-mcp
```
### Design tab
The sidebar's **Design** tab (next to Layers and Library) lists the project's color variables as
editable swatches, switches variable modes (for example the four Catppuccin flavours), and lists the
page's components with Go to and Insert buttons. Editing a variable recolours every fill that follows it.
### Codex
```sh
codex mcp add papercraft --url http://127.0.0.1:29980/mcp
# or stdio
codex mcp add papercraft -- /path/to/papercraft-mcp
```
which writes this to `~/.codex/config.toml` (either form works):
```toml
[mcp_servers.papercraft]
url = "http://127.0.0.1:29980/mcp"
# command = "/path/to/papercraft-mcp"
```
Then ask the agent something like *"In PaperCraft, create a 390×844 mobile artboard and design a sign-in screen"*, or *"draw a flowchart of our deploy process on a new page, hand-drawn style"*. The [`papercraft` and `papercraft-design` agent skills](skills) teach an agent the workflow (build, screenshot, lint, fix) and design rules; [docs/agents.md](docs/agents.md) has the full guide.
### Shell (no MCP client needed)
The app must be running with a project open.
```sh
papercraft-cli list # tool names, one line each (works offline)
papercraft-cli schema write_html # one tool's full schema
papercraft-cli call get_basic_info
papercraft-cli call create_artboard '{"name":"Hero","styles":{"width":"800px","height":"400px"}}'
echo '{"nodeId":"12"}' | papercraft-cli call get_screenshot - --out hero.png
```
Text goes to stdout, images are saved to `--out` (default `<tool>.png`) and the path is printed, and the exit status is 1 on a tool error or when the app isn't running.
### Tools
| Group | Tools |
|---|---|
| Projects & pages | `list_resources`, `open_file`, `create_file`, `create_page`, `rename_pages`, `delete_pages` |
| Read | `get_basic_info`, `get_selection`, `get_node_info`, `get_children`, `get_tree_summary`, `get_computed_styles`, `get_jsx`, `find_nodes`, `get_fill_image`, `get_font_family_info`, `get_guide` |
| See | `get_screenshot` (PNG image content of a node or the page), `export` (PNG/SVG/PDF files), `export_combined_pdf` |
| Write | `create_artboard`, `write_html`, `update_styles`, `set_text_content`, `rename_nodes`, `duplicate_nodes`, `move_nodes`, `delete_nodes`, `finish_working_on_nodes` (saves) |
| Whiteboard and session | `create_shape` (rectangles, ellipses, diamonds, stars, stickies, text, lines, arrows bound to shapes), `select_nodes`, `undo`, `redo` |
| Design system | `get_variables`, `set_variables`, `set_variable_mode`, `get_components`, `create_component`, `create_instance`, `search_icons`, `lint_design` |
`write_html` takes HTML with inline styles: flexbox (`display:flex`, direction, gap, padding, alignment, `flex-grow`, wrap) and block stacking map onto auto layout with CSS's stretch rules; text gets size, weight, italic, color, line height, letter spacing, alignment and rich-text runs (`<b>`, `<i>`, `<span style>`); boxes get backgrounds (colors, gradients, images), borders, radii, opacity and blend modes; `<img>` takes local paths or `data:` URIs and `<svg>` is imported as vectors. `update_styles` takes the same CSS as JSON, plus the hand-drawn keys `sketch`, `roughness`, `fillStyle`, `strokeStyle`. Node ids look like `3fa9c1:14` (page and node); `pageId` lets an agent work on another page without switching the user's view. The full reference is in [skills/papercraft/references/tools.md](skills/papercraft/references/tools.md).
## Design systems: variables, components, icons
Agents (and `papercraft-cli`) get the pieces of a design system, so files aren't a pile of hex codes and copies:
```sh
papercraft-cli call set_variables '{"variables":{"surface":"#313244","accent":"#cba6f7"}}'
papercraft-cli call write_html '{"targetNodeId":"root","mode":"insert-children","html":"<div style=\"background:var(--surface)\">…</div>"}'
papercraft-cli call create_component '{"nodeId":"<frame>","name":"Button / Primary"}'
papercraft-cli call create_instance '{"componentId":"<id>","parentId":"<frame>"}' # then set_text_content on its layers
papercraft-cli call lint_design '{"nodeId":"<frame>"}' # contrast, grid, type scale, names
papercraft-cli icons add phosphor lucide # open icon sets from npm, with their licences
papercraft-cli icons search arrow left
# in write_html: <x-paper-icon name="phosphor:gear" size="20" color="var(--accent)"/>
```
* **Variables** are named colors per project (`get_variables`, `set_variables`). A fill or text color written as `var(--name)` stays linked; `set_variables` moves every linked fill on every page in one undoable step, and the link is saved in the file. `set_variables` with a `mode` stores one set of values per mode (Light, Dark) and `set_variable_mode` switches the whole project. Strokes and gradients keep fixed colors; fill-based icon sets (Phosphor, Material) follow variables, stroke sets (Lucide) don't.
* **Components** (`create_component`, `create_instance`, `get_components`, `<x-paper-instance>`): edit the main component and every instance follows, except what an instance overrode (text, fills, size, ... are marked automatically when set through `set_text_content` / `update_styles`). Components and their instances live on one page.
* **Icons** live in `<data dir>/papercraft/icons/<set>/` (override with `PAPERCRAFT_ICONS`). Sets: Lucide (ISC), Tabler (MIT), Phosphor (MIT), Heroicons (MIT), Material Symbols (Apache-2.0); each keeps its licence file. `examples/taskflow.py` builds an 8-screen app with all three.
* **Lint** (`lint_design`) checks WCAG contrast, spacing on a 4px grid, the type scale, text under 12px, touch targets under 44px, default layer names and hard-coded colors that should be variables, and says how to fix each.
More in [docs/design-system.md](docs/design-system.md).
## Get started
### Download
The macOS app (`papercraft-<version>-macos-<arch>.dmg`, containing PaperCraft.app) and the command-line tools (`papercraft-cli-<version>-macos-<arch>.zip`, with `papercraft-cli` and `papercraft-mcp`) are attached to each release of [masi/papercraft](https://git.marcospaulo.dev.br/masi/papercraft/releases). Builds are ad-hoc signed and not notarized, so on another Mac open the app with right-click › Open the first time.
### Build from source
You need Rust 1.95 or newer (`rust-version` in `Cargo.toml`). Install it with [rustup](https://rustup.rs).
```sh
cargo build --release
./target/release/paper-rs # projects home screen
./target/release/paper-rs --demo # sample planning board (not saved)
./target/release/paper-rs ~/Documents/paper-rs/Plan # open a project folder
./target/release/paper-rs board.paper-rs # open a paper-rs 0.1 document
./target/release/papercraft # projects home screen
./target/release/papercraft --demo # sample planning board (not saved)
./target/release/papercraft ~/Documents/papercraft/Plan # open a project folder
./target/release/papercraft board.papercraft # open a document
packaging/macos/package.sh # PaperCraft.app on a DMG, plus the CLI zip (macOS)
```
### macOS
**macOS:** `xcode-select --install` for the linker, then the commands above. It uses Metal through wgpu. Shortcuts use ⌘, and trackpad pinch zooms.
```sh
xcode-select --install # command line tools (linker)
curl https://sh.rustup.rs -sSf | sh
cargo build --release && ./target/release/paper-rs --demo
```
It uses Metal through wgpu. Shortcuts use ⌘, and trackpad pinch zooms. The macOS target is
type-checked in CI-style (`cargo check --target aarch64-apple-darwin`) but has not been run on
Mac hardware yet (see Known gaps).
### Linux
```sh
# Debian/Ubuntu runtime libraries (usually already present on desktops)
sudo apt install libxkbcommon-x11-0 libxcb-xkb1 libvulkan1 mesa-vulkan-drivers
cargo build --release && ./target/release/paper-rs --demo
```
It runs on X11 and Wayland through Vulkan, or GL as a fallback. Shortcuts use Ctrl. File
dialogs use the XDG desktop portal.
**Linux:** install the runtime libraries (`sudo apt install libxkbcommon-x11-0 libxcb-xkb1 libvulkan1 mesa-vulkan-drivers` on Debian/Ubuntu), then build. It runs on X11 and Wayland through Vulkan, or GL as a fallback. Shortcuts use Ctrl. File dialogs use the XDG desktop portal.
### Headless (servers, CI)
No display is needed. wgpu renders offscreen, through Mesa lavapipe when there is no GPU:
```sh
paper-rs --screenshot ui.png --demo --size 1440x900 --scale 2 # full UI
paper-rs --screenshot home.png --home # projects home screen
paper-rs --export-png out.png PROJECT_DIR --page 0 --scale 2 [--transparent]
paper-rs --export-svg out.svg PROJECT_DIR
paper-rs --export-pdf out.pdf PROJECT_DIR --frames # one PDF page per frame
paper-rs --export out_dir PROJECT_DIR --format png --scope frames # a folder of PNGs
paper-rs --import board.excalidraw # new project, prints its folder
papercraft --screenshot ui.png --demo --size 1440x900 --scale 2 # full UI
papercraft --screenshot home.png --home # projects home screen
papercraft --export-png out.png PROJECT_DIR --page 0 --scale 2 [--transparent]
papercraft --export-svg out.svg PROJECT_DIR
papercraft --export-pdf out.pdf PROJECT_DIR --frames # one PDF page per frame
papercraft --export out_dir PROJECT_DIR --format png --scope frames # a folder of PNGs
papercraft --import board.excalidraw # new project, prints its folder
```
## AI agents (MCP)
![A sign-in screen written by an agent through write_html](docs/screenshots/milestone7_mcp.png)
paper-rs serves the [Model Context Protocol](https://modelcontextprotocol.io) while it runs, so
agents such as Claude Code and Codex can read and design on the open canvas, the way Paper's
own MCP server works (behaviour notes: `analysis/paper-mcp.md`). Every tool call runs through
the editor like a user edit: one undo step per call, and the window repaints immediately.
* **Streamable HTTP** (built into the app): `http://127.0.0.1:29980/mcp`. Paper uses 29979, so
both can run. Loopback only; requests from browsers (with an `Origin` header) and foreign
`Host` headers are rejected. `PAPER_RS_MCP_PORT=NNNN` changes the port; `PAPER_RS_MCP=0`
turns the server off.
* **stdio**: `paper-rs-mcp` (built next to `paper-rs`) relays stdio to the running app. It
lists the tools even when the app is closed, and tells the agent to start paper-rs if a
call can't reach it.
### Claude Code
### Tests
```sh
# HTTP (the app must be running)
claude mcp add --transport http --scope user paper-rs http://127.0.0.1:29980/mcp
# or stdio through the bridge
claude mcp add --scope user paper-rs -- /path/to/paper-rs/target/release/paper-rs-mcp
```
### Codex
```sh
# HTTP
codex mcp add paper-rs --url http://127.0.0.1:29980/mcp
# or stdio
codex mcp add paper-rs -- /path/to/paper-rs/target/release/paper-rs-mcp
```
which writes this to `~/.codex/config.toml` (either form works):
```toml
[mcp_servers.paper-rs]
url = "http://127.0.0.1:29980/mcp"
# command = "/path/to/paper-rs/target/release/paper-rs-mcp"
```
Then ask the agent something like *"In paper-rs, create a 390×844 mobile artboard and design a
sign-in screen"*, or *"draw a flowchart of our deploy process on a new page, hand-drawn
style"*.
### Tools
Names and arguments follow Paper's MCP server where paper-rs has an equivalent, so prompts
written for Paper work here too.
| Group | Tools |
|---|---|
| Projects & pages | `list_resources`, `open_file`, `create_file`, `create_page`, `rename_pages` |
| Read | `get_basic_info`, `get_selection`, `get_node_info`, `get_children`, `get_tree_summary`, `get_computed_styles`, `get_jsx`, `find_nodes`, `get_fill_image`, `get_font_family_info`, `get_guide` |
| See | `get_screenshot` (PNG image content of a node or the page), `export` (PNG/SVG/PDF files), `export_combined_pdf` |
| Write | `create_artboard`, `write_html`, `update_styles`, `set_text_content`, `rename_nodes`, `duplicate_nodes`, `move_nodes`, `delete_nodes`, `finish_working_on_nodes` (saves) |
| paper-rs extras | `create_shape` (rectangles, ellipses, diamonds, stars, stickies, text, lines, arrows bound to shapes), `select_nodes`, `undo`, `redo` |
`write_html` takes HTML with inline styles: flexbox (`display:flex`, direction, gap, padding,
alignment, `flex-grow`, wrap) and block stacking map onto auto layout with CSS's stretch rules;
text gets size, weight, italic, color, line height, letter spacing, alignment and rich-text
runs (`<b>`, `<i>`, `<span style>`); boxes get backgrounds (colors, gradients, images),
borders, radii, opacity and blend modes; `<img>` takes local paths or `data:` URIs and `<svg>`
is imported as vectors. `update_styles` takes the same CSS as JSON, plus the hand-drawn keys
`sketch`, `roughness`, `fillStyle`, `strokeStyle`. Node ids look like `3fa9c1:14` (page and
node); `pageId` lets an agent work on another page without switching the user's view.
## Tests
```sh
cargo test # ~140 tests: unit, scenario, headless GPU, CLI
PAPER_RS_REQUIRE_GPU=1 cargo test # fail (instead of skip) when no GPU adapter exists
cargo test # unit, scenario, headless GPU and CLI tests
PAPERCRAFT_REQUIRE_GPU=1 cargo test # fail (instead of skip) when no GPU adapter exists
cargo test --release --test perf -- --nocapture # 10k-element frame timings
```
* **Unit tests** cover geometry, vector paths, the rough.js port (compared with real
rough.js 4.6.4 output), auto layout and constraints, booleans, rich text spans, the elbow
router, formats and migrations, atomic writes, the project store, PDF structure, Excalidraw
and SVG import, the palette's fuzzy matching and the shortcut table.
* **Scenario tests** drive the editor with synthetic pointer and keyboard events:
`src/editor/tests.rs` (core editing), `tests/projects.rs` (projects, autosave, pages),
`tests/figma.rs` (groups, components, auto layout, constraints, pen, booleans, rich text,
guides), `tests/excalidraw.rs` (hand-drawn style, arrows, quick-connect, stickies, laser,
library), `tests/workflow.rs` (layers drag, palette, shortcuts), `tests/io.rs` (export,
import, clipboard, CLI), `tests/mcp.rs` (every MCP tool on a headless session, then an rmcp
client over HTTP and through the `paper-rs-mcp` stdio bridge).
* **Headless GPU tests** render through wgpu, assert pixels and write the screenshots below.
One rasterizes the SVG export with resvg and compares it with the GPU render; one renders
the PDF export with pdftoppm when installed.
The scenario tests drive the editor with synthetic pointer and keyboard events; `tests/mcp.rs` exercises every MCP tool on a headless session, then through an rmcp client over HTTP and through the `papercraft-mcp` stdio bridge. The SVG export is rasterized with resvg and compared with the GPU render.
| Milestone | Screenshot(s) in `docs/screenshots/` |
|---|---|
| 1. Local projects | `milestone1_home.png`, `milestone1_trash.png` |
| 2. Pages | `milestone2_pages.png` |
| 3. Figma core | `milestone3_figma_core.png`, `milestone3_canvas.png` |
| 4. Excalidraw core | `milestone4_whiteboard.png` |
| 5. Inspector, palette, shortcuts | `milestone5_inspector.png`, `milestone5_palette.png`, `milestone5_shortcuts.png` |
| 6. Import / export | `milestone6_pdf_page.png` (PDF rasterized by pdftoppm), `milestone6_excalidraw_import.png`, `milestone6_svg_import.png` |
| 7. MCP server | `milestone7_mcp.png` (a screen written through `write_html`, captured with `get_screenshot`), `milestone7_mcp_live_xvfb.png` (the live app after Claude Code drew into it over the stdio bridge) |
| paper-rs 0.1 | `m1_*` … `m6_*`, `app_demo.png`, `x11_window_xvfb.png` |
## Keyboard shortcuts
## Using it
![Whiteboard features](docs/screenshots/milestone4_whiteboard.png)
The tools sit in the floating bar at the bottom of the canvas. Select a layer to edit it in
the **Design** panel on the right. The **Layers** panel on the left shows the tree: click to
select, Shift-click to add, double-click to rename, and use 👁 / 🔒 to hide or lock. The
**Up/Down** buttons reorder.
* Draw a frame around existing shapes and it adopts them. Shapes drawn inside a frame become
its children, and dragging a layer into or out of a frame re-parents it.
* Top-level frames that contain content act as canvas regions. Drag from their body to
marquee-select inside them, and drag the frame by its name label.
* The pencil keeps a constant on-screen width at any zoom. With nothing selected, set width,
smoothing and color in the Design panel.
* Hold ⌘/Ctrl while dragging to suspend snapping.
### Keyboard shortcuts
⌘ on macOS, Ctrl on Linux and Windows. Press `?` or ⌘/ in the app for the full grouped list
(100+ bindings), or ⌘K to search every command.
⌘ on macOS, Ctrl on Linux and Windows. Press `?` or ⌘/ in the app for the full grouped list (100+ bindings), or ⌘K to search every command.
| Keys | Action | Keys | Action |
|---|---|---|---|
@@ -235,82 +296,25 @@ select, Shift-click to add, double-click to rename, and use 👁 / 🔒 to hide
| ⌘= / ⌘- / ⇧0 | Zoom in / out / 100% | ⇧1 / ⇧2 | Zoom to fit / selection |
| PageUp / PageDown | Previous / next page | ⌘\\ | Show / hide UI |
## Feature parity: Paper / Figma / Excalidraw vs paper-rs
Draw a frame around existing shapes and it adopts them; shapes drawn inside a frame become its children, and dragging a layer into or out of a frame re-parents it. Hold ⌘/Ctrl while dragging to suspend snapping.
Columns 2–4 say whether each product has the feature (✓) and where the behavior was learned:
Paper from its desktop shell and public docs (`analysis/PAPER_ARCHITECTURE.md`), Figma from
public docs (`analysis/FIGMA_NOTES.md`), Excalidraw from its MIT source
(`analysis/EXCALIDRAW_NOTES.md`). The last column is paper-rs: ✅ done, ⚠️ partial (see
Known gaps), ⏳ planned in a later milestone, ❌ not planned.
## Status
| Feature | Paper | Figma | Excalidraw | paper-rs |
|---|---|---|---|---|
| Local projects, recents grid, trash | (cloud dashboard) | ✓ (cloud) | (single file) | ✅ Folders in `~/Documents/paper-rs`, thumbnails, rename/duplicate/trash/restore |
| Autosave, crash-safe, versioned files | ✓ (cloud) | ✓ (cloud) | ✓ (browser storage) | ✅ 1 s autosave, atomic writes, migration chain (page v1→v3) |
| Pages, infinite canvas per page | ✓ | ✓ | – | ✅ Per-page history and camera, reorder/duplicate/delete |
| Frames with clipping | ✓ | ✓ | ✓ | ✅ ⚠️ clip is rectangular (corner radius not clipped) |
| Groups | ✓ | ✓ | ✓ | ✅ Bounds follow children, click selects group, double-click enters, scale on resize |
| Components, instances, overrides | – | ✓ | (library only) | ✅ Live sync, per-property overrides, reset, detach, go to main |
| Auto layout (direction, gap, padding, hug/fill/fixed, wrap) | ✓ (flexbox) | ✓ | – | ✅ Drag-reorder in flow, space-between, absolute children |
| Constraints | – | ✓ | – | ✅ Left/right/stretch/center/scale per axis, ⌘ to ignore |
| Pen tool, vector point editing | ✓ | ✓ | – | ✅ Corner/smooth points, handles (⌥ breaks), close, delete, toggle |
| Boolean ops (union/subtract/intersect/exclude), flatten | (roadmap) | ✓ | – | ✅ ⚠️ destructive (result is a path, curves flattened) |
| Gradients (linear, radial) | ✓ | ✓ | – | ✅ Multi-stop, angle, radius; ⚠️ no on-canvas gradient handles |
| Image fills | ✓ | ✓ | ✓ (image element) | ✅ Fill/fit/stretch/tile, place image (⌘⇧K), drag-and-drop, stored in project |
| Strokes: width, align, dash, caps, joins | ✓ | ✓ | ✓ | ✅ |
| Corner radius (per corner), polygons, stars | ✓ | ✓ | – | ✅ |
| Opacity, blend modes | ✓ | ✓ | ✓ (opacity) | ✅ ⚠️ canvas renders 5 modes exactly, all 16 exact in SVG |
| Rich text (per-range bold/italic/size/colour) | ✓ | ✓ | – | ✅ Plus underline, strikethrough, line height, letter spacing |
| Align / distribute | ✓ | ✓ | ✓ | ✅ ⌥A/D/W/S/H/V, ⌥⇧H/V |
| Smart guides, spacing, measurement | ✓ | ✓ | – | ✅ Edge/center snap, equal spacing, ⌥-hover distances |
| Hand-drawn (rough) style per element | – | – | ✓ | ✅ rough.js 4.6.4 port, verified against rough.js output; sloppiness, fill styles |
| Bound arrows, elbow arrows, quick shapes, sticky notes | – | (FigJam) | ✓ | ✅ Orbit binding that follows shapes, straight/curved/elbow, 5 heads, diamond, quick-connect, stickies |
| Laser pointer, shape library | – | (FigJam) | ✓ | ✅ Fading laser trail; shared library with starter items |
| Inspector, layers drag-reorder, command palette (⌘K) | ✓ | ✓ | ✓ | ✅ Sectioned inspector, tree drag above/below/into, fuzzy palette over actions, pages, layers, library |
| Export PNG / SVG / PDF of selection, frame, page | ✓ | ✓ | ✓ (PNG/SVG) | ✅ Selection, each frame, page or all pages; vector PDF with gradients, images, blend modes; copy as PNG/SVG |
| Import .excalidraw / SVG, copy-paste across projects | – | ✓ (SVG) | ✓ | ✅ .excalidraw scenes, .excalidrawlib libraries, SVG (paths, gradients, images, text), system clipboard between pages, projects and apps |
| Freehand ink with pressure | – | (pencil) | ✓ | ✅ Smoothing, pressure, eraser |
| MCP server for AI agents | ✓ | ✓ (Dev Mode) | ✓ (community) | ✅ Streamable HTTP in the app + stdio bridge; Paper-compatible tool names, `write_html`, screenshots, whiteboard shapes |
| Multiplayer, cloud sync, plugins | ✓ | ✓ | ✓ | ❌ local-first by design |
> [!IMPORTANT]
> **PaperCraft is in early alpha.** It is usable for planning, sketching and building screens, but it is not a replacement for a mature design tool. [ROADMAP.md](ROADMAP.md) lists what is missing, in priority order; [PROGRESS.md](PROGRESS.md) is the milestone history.
## Known gaps
Known limits:
* **Paper's document model is HTML/CSS.** paper-rs uses geometric nodes with flexbox-like auto
layout on frames; there are no variables, CSS export or code generation.
* **Rendering approximations.** Frame clipping is a rectangle (scissor), so rounded frames
don't clip their corners. Group opacity multiplies into children instead of compositing the
group. Overlay, color dodge/burn, hard/soft light, difference, exclusion, hue, saturation,
color and luminosity blend as Normal on the canvas (they are exact in SVG export).
* **Booleans are destructive**: the result is a new vector path with flattened curves.
Gradients are edited in the inspector only.
* **Not run on macOS hardware yet.** The macOS build type-checks and uses only portable APIs
(Metal via wgpu, winit, rfd), but it has not been launched on a Mac. On Linux, the real
window was exercised under Xvfb; the screenshot is `x11_window_xvfb.png`.
* **Pen pressure.** winit 0.30 does not expose tablet pressure for pen events that arrive as
mouse input, which is common with macOS and Wacom tablets. Pressure comes from touch/pen
`force` when the platform reports it. Otherwise it is simulated from stroke velocity.
* **Text** uses Inter (regular, bold, italic, bold italic) with no shaping, so there are no
ligatures, complex scripts or RTL, and no font picker. IME preedit is not displayed
(committed text works).
* **No rotation.** Nodes are axis-aligned boxes; rotated imports are baked into paths.
* **Undo granularity.** Document renames from the Design panel are not undoable, and the
selection is not part of history.
* **Performance.** Nodes are tessellated once per zoom octave and cached; unchanged frames
reuse the previous item list and GPU buffers, so panning uploads nothing. With 10k visible
nodes a cached frame takes ~3 ms (release, `tests/perf.rs`); the first frame at a new zoom
octave takes ~140 ms on a CPU. Not tuned for 100k+.
* **PDF**: text is outlined (not selectable); gradient stop transparency uses the first
stop's alpha; tiled image fills are drawn as repeated images.
* **Import**: Excalidraw rotation is baked into paths (text rotation is dropped), bound text
inside shapes stays a separate text layer (except sticky notes), and fonts map to Inter.
SVG patterns, filters, masks and clip paths are not imported.
* **MCP**: one project is open at a time, so `fileId` must name the open project (call
`open_file` to switch; the user's window switches too). No design tokens, comments or AI
image generation (Paper has them). Moving or duplicating layers between pages isn't
supported. Remote `http(s)` images aren't fetched; pass a local path or a `data:` URI.
CSS margin, grid, shadows and transforms are reported back as ignored styles.
* **Linux file dialogs** need an XDG desktop portal. Without one, Save/Open dialogs return
nothing. The headless CLI is unaffected.
* **Text** is Inter only (regular, bold, italic, bold italic) with no shaping: no ligatures, complex scripts or RTL, and no font picker. IME preedit is not displayed (committed text works).
* **Rendering approximations.** Frame clipping is a rectangle, so rounded frames don't clip their corners. Group opacity multiplies into children. Overlay, dodge, burn, light, difference, exclusion and the HSL blend modes draw as Normal on the canvas (they are exact in SVG export).
* **Booleans are destructive**: the result is a new vector path with flattened curves.
* **Variables are colors only** and apply to fills and text color; strokes and gradients keep fixed colors.
* **`write_html`** ignores margin, grid, tables, shadows and transforms (it reports them as `ignoredStyles`). Remote `http(s)` images aren't fetched; pass a local path or a `data:` URI.
* **MCP**: one project is open at a time, so `fileId` must name the open project. Moving or duplicating layers between pages isn't supported.
* **Pen pressure.** winit 0.30 does not expose tablet pressure for pen events that arrive as mouse input, which is common with macOS and Wacom tablets. Otherwise it is simulated from stroke velocity.
* **Linux file dialogs** need an XDG desktop portal. The headless CLI is unaffected.
* **PDF** text is outlined (not selectable).
## Project layout
@@ -322,24 +326,40 @@ src/history.rs transactions, undo/redo
src/layout.rs auto layout, constraints, group bounds
src/ink.rs stroke smoothing, pressure, outline
src/text.rs rich text layout and glyph outlines
src/assets.rs image registry (content-hashed)
src/project/ project store, manifest/page formats, migrations
src/session.rs open project, autosave, thumbnails
src/editor/ tools, structure (groups/components), vector ops, pages, text editing
src/render/ draw ops → cached meshes → wgpu; headless capture
src/io/ PNG, SVG, PDF, export scopes, Excalidraw + SVG import, clipboard,
atomic writes
src/connector.rs arrow bindings, elbow router, arrowheads
src/library.rs shared shape library
src/ui/ home screen, pages, layers, inspector
src/app.rs winit application
src/mcp/ MCP server (rmcp): tools, HTML/CSS mapping, HTTP service
src/bin/paper-rs-mcp.rs stdio bridge to the running app
analysis/ reverse-engineering findings and design (raw dumps are gitignored)
docs/screenshots/ headless renders produced by `cargo test`
src/io/ PNG, SVG, PDF, export scopes, Excalidraw + SVG import, clipboard
src/mcp/ MCP server (rmcp): tools, HTML/CSS mapping, lint, HTTP service
src/ui/ home screen, pages, layers, inspector, palette
src/bin/ papercraft-cli (shell access) and papercraft-mcp (stdio bridge)
skills/ agent skills: papercraft, papercraft-design
analysis/ behaviour studies and design notes
docs/ guides and headless screenshots produced by `cargo test`
```
## License
## Downloads
MIT OR Apache-2.0 for the code in this repository. Inter (Regular, Medium, SemiBold) is
© The Inter Project Authors under the SIL Open Font License 1.1; see `assets/fonts/OFL.txt`.
| Build | File | Notes |
|---|---|---|
| Windows installer | `papercraft-<ver>-windows-<arch>.msi` | Per-machine installer (WiX) |
| Windows portable | `papercraft-<ver>-windows-<arch>-portable.zip` | `papercraft.exe` + CLI and MCP bridge |
| macOS app | `papercraft-<ver>-macos-<arch>.dmg` | PaperCraft.app, drag to Applications. Ad-hoc signed, not notarized |
| Command-line tools | `papercraft-cli-<ver>-<platform>-<arch>.zip` | `papercraft-cli` and `papercraft-mcp` |
Releases: https://git.marcospaulo.dev.br/masi/papercraft/releases. Other platforms: build from source.
## License and credits
PaperCraft is dual-licensed under [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE), at your option.
Bundled fonts, icons and other assets keep their own open licenses; each one is listed with its author, source and license in [ATTRIBUTION.md](ATTRIBUTION.md). Inter (Regular, Medium, SemiBold, Bold and italics) is © The Inter Project Authors under the SIL Open Font License 1.1 (`assets/fonts/OFL.txt`). A few algorithms are ported from MIT-licensed projects (rough.js, hachure-fill, Excalidraw); they are listed with their notices in [THIRD_PARTY.md](THIRD_PARTY.md).
The app icon is original artwork ([`assets/app-icon/`](assets/app-icon/README.md)).
### Reverse-engineered origin
PaperCraft is an independent, clean-room-style reimplementation. It was reverse engineered from [Paper](https://paper.design) by studying the behavior of the Paper desktop app (`analysis/PAPER_ARCHITECTURE.md`) with [REA](https://github.com/morluto/rea) and Claude Code; Figma and Excalidraw were studied from their public docs and, for Excalidraw, its MIT source (`analysis/`). Only *behavior* was studied: no Paper or Figma code, shaders, icons, fonts or assets are used or committed. PaperCraft is not affiliated with, sponsored by or endorsed by Paper or Figma; those names are used only to describe the workflows it is compatible with.
<sub>Photoshop, Illustrator and Adobe are trademarks of Adobe Inc.; Figma is a trademark of Figma, Inc.; Paper is a product of its respective owners. PaperCraft is an independent, open-source project.</sub>
+87
View File
@@ -0,0 +1,87 @@
# Roadmap
PaperCraft is an early alpha: a local-first infinite-canvas design app that agents can drive. This
file lists what is still missing, in priority order, with an honest status. Done items are checked
against `src/mcp/tools.rs` and the UI code (2026-10-12); rows 15, 23, 25, 32, 34, 39, 40, 45 and section 6 were updated 2026-10-21. Milestone history is in
[PROGRESS.md](PROGRESS.md); known rendering and import limits are in the README.
Status: **done** (works today), **partial** (some of it works), **todo**.
## 1. Design systems (the current focus)
Agents can already build a design system through the tools; people cannot yet manage one in the UI.
| # | Item | Status | Notes |
|---|---|---|---|
| 1 | Inspector UI for variables | **done** | Design tab lists/renames/adds/deletes variables & modes; Inspector binds/unlinks solid fills to variables. |
| 2 | Inspector UI for components | **done** | Design tab searches components, inserts instances, swaps/resets/detaches instances; Inspector header swaps/resets instances. |
| 3 | Design lint | **done** | `lint_design`: WCAG contrast, 4px grid, type scale, tiny text, 44px targets, default names, hard-coded colors. |
| 4 | Lint auto-fix | **done** | `lint_design {fix: true}` and UI `Fix` / `Fix all`: snaps spacing to 4px grid, snaps type scale, enforces 44px targets, links matching colors to variables. |
| 5 | Lint in the UI | **done** | Live Lint section in Design tab; click issue to select & zoom, or click `Fix` / `Fix all`. |
| 6 | Variable modes | **done** | Mode selector + create/delete modes in Design tab and via `set_variables {mode}` / `set_variable_mode`. |
| 7 | Number variables (spacing, radius, font size) | partial | Non-color tokens (`--spacing-md`) editable in Design tab and substituted in CSS; typed per-field bindings todo. |
| 8 | Stroke and gradient variables | todo | Strokes and gradients keep fixed colors. |
| 9 | Text styles | todo | Named type styles (Heading / L, Body / M) that update every text layer using them. |
| 10 | Component variants and properties | todo | Variants are separate components named `Button / Primary`. No variant sets, boolean or text properties. |
| 11 | Swap instance, detach by tool | **done** | `swap_instance` and `detach_instance` MCP tools + UI controls in Design tab and Inspector. |
| 12 | Cross-page and shared libraries | todo | Components and instances must live on one page. |
| 13 | Export design tokens | **done** | `get_variables` with `format: "css"`, `"json"` (W3C DTCG + modes), or `"tailwind"` (`@theme`), plus Copy CSS / Copy JSON in Design tab. |
| 14 | Apply a design system to existing work | partial | `lint_design {fix: true}` links matching literal colors to variables and snaps spacing/type scale. |
## 2. Agent workflow
| # | Item | Status | Notes |
|---|---|---|---|
| 15 | MCP and CLI tool surface | **done** | 53 tools, one undo step per call, `papercraft-cli list / schema / call`. |
| 16 | Agent skills | **done** | `skills/papercraft` and `skills/papercraft-design`. |
| 17 | Accessibility annotations | todo | Reading order, roles and alt text on layers, checked by the linter. |
| 18 | Code export from frames | **done** | `get_jsx` supports `format: "inline"`, `"tailwind"` (Tailwind utility classes), and `"html"` (HTML + CSS rules with `:root` variables). |
| 19 | Plugin and skill marketplace | todo | Skills are copied by hand today. |
| 20 | Screenshot diffing | **done** | `diff_frames` tool (`src/mcp/diff.rs`) for structural/property frame diffing + `diff_rgba` pixel diffing with highlight PNG. |
| 21 | Moving nodes between pages | todo | `move_nodes` stays on one page. |
| 22 | Remote images in `write_html` | todo | Only local paths and `data:` URIs. |
## 3. Design features
| # | Item | Status | Notes |
|---|---|---|---|
| 23 | Prototyping links and flows | **done** | Prototype tab in the inspector; Present mode follows links with a camera glide. Smart transitions and hover states todo. |
| 24 | Responsive constraints and breakpoint preview | partial | Constraints (left, right, stretch, center, scale) exist in the editor; there is no breakpoint preview or per-size variants. |
| 25 | Shadows, blur and effects | partial | Drop shadow is an inspector effect. Layer and background blur todo (needs a renderer pass). |
| 26 | Margin and grid layout | partial | Wrapped-line cross alignment, per-line fill/align, and `layout_grid` track layout (`src/layout.rs`) implemented; CSS margin still ignored. |
| 27 | Font choice | todo | Inter only. |
| 28 | Rotation | todo | Nodes are axis-aligned. |
| 29 | Overlay, dodge, burn, light blend modes on the canvas | todo | Exact in SVG and PDF export, approximated as Normal on the canvas. |
| 30 | Rounded frame clipping | todo | Clipping is a rectangle. |
| 31 | Non-destructive booleans | todo | The result is a flattened path. |
## 4. Files and collaboration
| # | Item | Status | Notes |
|---|---|---|---|
| 32 | Version history | **done** | Named and automatic saved versions per page: rename, restore, delete (`src/versions.rs`). Restore now includes variables and tokens; compare todo. |
| 33 | Figma import | **done** | `.fig` binary (Kiwi wire decoder + zip container) and Figma REST API JSON import in `src/io/fig.rs`. |
| 34 | Multiplayer and cloud sync | partial | Optional shared projects through the relay, with merge of concurrent edits to one page. Presence (cursors, selections) todo. Stays optional. |
| 35 | Release builds for Windows and Linux | todo | The code targets them (wgpu, winit); packaging today is the macOS DMG and the `papercraft-cli` zip. |
## 5. Quality
| # | Item | Status | Notes |
|---|---|---|---|
| 36 | Pen pressure on macOS tablets | todo | winit 0.30 does not expose pressure for mouse-like pen events. |
| 37 | Text shaping, ligatures, RTL | todo | No shaping. IME preedit is not shown. |
| 38 | Performance beyond 10k visible nodes | todo | Cached frames take about 3 ms at 10k nodes; not tuned for 100k. |
## 6. Agent runs (next)
Spec: [specs/agent-runs/spec.md](specs/agent-runs/spec.md), tasks: [specs/agent-runs/tasks.md](specs/agent-runs/tasks.md). Design: `PaperCraft` file, page `Agent runs`.
| # | Item | Status | Notes |
|---|---|---|---|
| 39 | Agent runs and auto-versions | **done** | Editing calls group into runs; edited pages get auto-versions; runs persist, revert per page, and prune to 50. |
| 40 | Review agent changes | **done** | Id-paired diff, grouped review, canvas overlay, per-change revert and accept all; version compare UI remains todo. |
| 41 | Agent presence on the canvas | todo | Outline the node a tool call touches, label it, pause or stop the run. |
| 42 | `get_context` tool | todo | Selection, variables, nearby components and lint summary in one call, so an agent orients in one round trip. |
| 43 | Comments assigned to agents | todo | `@agent` in a thread triggers an edit and a reply. Needs threaded comments. |
| 44 | In-app prompt bar | todo | Run a prompt on the selection through the user's own key or local CLI. Largest scope: provider config, key storage, cost. |
| 45 | Correct tool annotations | **done** | `lint_design` no longer sends `readOnlyHint`; `fix: true` edits are classified. |
+7 -1
View File
@@ -1,6 +1,6 @@
# Third-party code and assets
paper-rs is MIT OR Apache-2.0. It ports a few algorithms from MIT-licensed projects (listed
papercraft is MIT OR Apache-2.0. It ports a few algorithms from MIT-licensed projects (listed
below with their copyright notices and license text) and bundles the Inter font (SIL OFL 1.1,
`assets/fonts/OFL.txt`). Figma and Paper are proprietary: only their *behavior* was studied
(`analysis/FIGMA_NOTES.md`, `analysis/PAPER_ARCHITECTURE.md`), and no code, shaders, icons or
@@ -17,6 +17,12 @@ assets from them are used.
Each ported module starts with a comment naming its source.
## Reimplemented formats
| Project | License | What was reimplemented | Where |
|---|---|---|---|
| [OpenDesign](https://github.com/nexu-io/open-design) | Apache-2.0 | The design-system package format (`manifest.json` / `tokens.css` / `DESIGN.md`), written from the published format description; no file of that project is copied | `src/design_system.rs` |
## Dependencies
Rust crates are pulled from crates.io under their own licenses (see `Cargo.lock`); notable ones
+5
View File
@@ -0,0 +1,5 @@
# PaperCraft app icon
An original design: a sheet of paper with a folded corner inside a selection frame with handles, and a pen nib drawing on it. Catppuccin palette: Crust/Mantle gradient tile, Text `#cdd6f4` sheet, Mauve `#cba6f7` fold and nib, Blue `#89b4fa` frame.
`papercraft.svg` is the source (macOS tile with Apple's margin, 824/1024 of the canvas); regenerate the PNGs with `resvg papercraft.svg papercraft-1024.png -w 1024`, then `iconutil` for the `.icns`. The `.ico` is the tile cropped edge to edge.
License: original artwork, MIT OR Apache-2.0 like the rest of the repository.
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

+28
View File
@@ -0,0 +1,28 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="1024" height="1024">
<title>PaperCraft app icon</title>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#313244"/><stop offset="1" stop-color="#181825"/></linearGradient>
<linearGradient id="nib" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#d9bcfa"/><stop offset="1" stop-color="#b48ef0"/></linearGradient>
<clipPath id="tile"><path d="M924.0,512.0 L923.9,608.0 L923.8,638.6 L923.5,660.9 L923.1,679.0 L922.6,694.5 L922.0,708.2 L921.2,720.5 L920.4,731.8 L919.4,742.2 L918.3,751.9 L917.1,761.0 L915.8,769.6 L914.4,777.6 L912.8,785.3 L911.2,792.6 L909.4,799.5 L907.5,806.1 L905.4,812.4 L903.3,818.5 L901.0,824.2 L898.5,829.8 L896.0,835.1 L893.3,840.2 L890.5,845.1 L887.6,849.8 L884.5,854.3 L881.2,858.7 L877.9,862.8 L874.3,866.8 L870.7,870.7 L866.8,874.3 L862.8,877.9 L858.7,881.2 L854.3,884.5 L849.8,887.6 L845.1,890.5 L840.2,893.3 L835.1,896.0 L829.8,898.5 L824.2,901.0 L818.5,903.3 L812.4,905.4 L806.1,907.5 L799.5,909.4 L792.6,911.2 L785.3,912.8 L777.6,914.4 L769.6,915.8 L761.0,917.1 L751.9,918.3 L742.2,919.4 L731.8,920.4 L720.5,921.2 L708.2,922.0 L694.5,922.6 L679.0,923.1 L660.9,923.5 L638.6,923.8 L608.0,923.9 L512.0,924.0 L416.0,923.9 L385.4,923.8 L363.1,923.5 L345.0,923.1 L329.5,922.6 L315.8,922.0 L303.5,921.2 L292.2,920.4 L281.8,919.4 L272.1,918.3 L263.0,917.1 L254.4,915.8 L246.4,914.4 L238.7,912.8 L231.4,911.2 L224.5,909.4 L217.9,907.5 L211.6,905.4 L205.5,903.3 L199.8,901.0 L194.2,898.5 L188.9,896.0 L183.8,893.3 L178.9,890.5 L174.2,887.6 L169.7,884.5 L165.3,881.2 L161.2,877.9 L157.2,874.3 L153.3,870.7 L149.7,866.8 L146.1,862.8 L142.8,858.7 L139.5,854.3 L136.4,849.8 L133.5,845.1 L130.7,840.2 L128.0,835.1 L125.5,829.8 L123.0,824.2 L120.7,818.5 L118.6,812.4 L116.5,806.1 L114.6,799.5 L112.8,792.6 L111.2,785.3 L109.6,777.6 L108.2,769.6 L106.9,761.0 L105.7,751.9 L104.6,742.2 L103.6,731.8 L102.8,720.5 L102.0,708.2 L101.4,694.5 L100.9,679.0 L100.5,660.9 L100.2,638.6 L100.1,608.0 L100.0,512.0 L100.1,416.0 L100.2,385.4 L100.5,363.1 L100.9,345.0 L101.4,329.5 L102.0,315.8 L102.8,303.5 L103.6,292.2 L104.6,281.8 L105.7,272.1 L106.9,263.0 L108.2,254.4 L109.6,246.4 L111.2,238.7 L112.8,231.4 L114.6,224.5 L116.5,217.9 L118.6,211.6 L120.7,205.5 L123.0,199.8 L125.5,194.2 L128.0,188.9 L130.7,183.8 L133.5,178.9 L136.4,174.2 L139.5,169.7 L142.8,165.3 L146.1,161.2 L149.7,157.2 L153.3,153.3 L157.2,149.7 L161.2,146.1 L165.3,142.8 L169.7,139.5 L174.2,136.4 L178.9,133.5 L183.8,130.7 L188.9,128.0 L194.2,125.5 L199.8,123.0 L205.5,120.7 L211.6,118.6 L217.9,116.5 L224.5,114.6 L231.4,112.8 L238.7,111.2 L246.4,109.6 L254.4,108.2 L263.0,106.9 L272.1,105.7 L281.8,104.6 L292.2,103.6 L303.5,102.8 L315.8,102.0 L329.5,101.4 L345.0,100.9 L363.1,100.5 L385.4,100.2 L416.0,100.1 L512.0,100.0 L608.0,100.1 L638.6,100.2 L660.9,100.5 L679.0,100.9 L694.5,101.4 L708.2,102.0 L720.5,102.8 L731.8,103.6 L742.2,104.6 L751.9,105.7 L761.0,106.9 L769.6,108.2 L777.6,109.6 L785.3,111.2 L792.6,112.8 L799.5,114.6 L806.1,116.5 L812.4,118.6 L818.5,120.7 L824.2,123.0 L829.8,125.5 L835.1,128.0 L840.2,130.7 L845.1,133.5 L849.8,136.4 L854.3,139.5 L858.7,142.8 L862.8,146.1 L866.8,149.7 L870.7,153.3 L874.3,157.2 L877.9,161.2 L881.2,165.3 L884.5,169.7 L887.6,174.2 L890.5,178.9 L893.3,183.8 L896.0,188.9 L898.5,194.2 L901.0,199.8 L903.3,205.5 L905.4,211.6 L907.5,217.9 L909.4,224.5 L911.2,231.4 L912.8,238.7 L914.4,246.4 L915.8,254.4 L917.1,263.0 L918.3,272.1 L919.4,281.8 L920.4,292.2 L921.2,303.5 L922.0,315.8 L922.6,329.5 L923.1,345.0 L923.5,363.1 L923.8,385.4 L923.9,416.0Z"/></clipPath>
<filter id="sh" x="-20%" y="-20%" width="140%" height="150%"><feDropShadow dx="0" dy="14" stdDeviation="16" flood-color="#000" flood-opacity=".4"/></filter>
</defs>
<path d="M924.0,512.0 L923.9,608.0 L923.8,638.6 L923.5,660.9 L923.1,679.0 L922.6,694.5 L922.0,708.2 L921.2,720.5 L920.4,731.8 L919.4,742.2 L918.3,751.9 L917.1,761.0 L915.8,769.6 L914.4,777.6 L912.8,785.3 L911.2,792.6 L909.4,799.5 L907.5,806.1 L905.4,812.4 L903.3,818.5 L901.0,824.2 L898.5,829.8 L896.0,835.1 L893.3,840.2 L890.5,845.1 L887.6,849.8 L884.5,854.3 L881.2,858.7 L877.9,862.8 L874.3,866.8 L870.7,870.7 L866.8,874.3 L862.8,877.9 L858.7,881.2 L854.3,884.5 L849.8,887.6 L845.1,890.5 L840.2,893.3 L835.1,896.0 L829.8,898.5 L824.2,901.0 L818.5,903.3 L812.4,905.4 L806.1,907.5 L799.5,909.4 L792.6,911.2 L785.3,912.8 L777.6,914.4 L769.6,915.8 L761.0,917.1 L751.9,918.3 L742.2,919.4 L731.8,920.4 L720.5,921.2 L708.2,922.0 L694.5,922.6 L679.0,923.1 L660.9,923.5 L638.6,923.8 L608.0,923.9 L512.0,924.0 L416.0,923.9 L385.4,923.8 L363.1,923.5 L345.0,923.1 L329.5,922.6 L315.8,922.0 L303.5,921.2 L292.2,920.4 L281.8,919.4 L272.1,918.3 L263.0,917.1 L254.4,915.8 L246.4,914.4 L238.7,912.8 L231.4,911.2 L224.5,909.4 L217.9,907.5 L211.6,905.4 L205.5,903.3 L199.8,901.0 L194.2,898.5 L188.9,896.0 L183.8,893.3 L178.9,890.5 L174.2,887.6 L169.7,884.5 L165.3,881.2 L161.2,877.9 L157.2,874.3 L153.3,870.7 L149.7,866.8 L146.1,862.8 L142.8,858.7 L139.5,854.3 L136.4,849.8 L133.5,845.1 L130.7,840.2 L128.0,835.1 L125.5,829.8 L123.0,824.2 L120.7,818.5 L118.6,812.4 L116.5,806.1 L114.6,799.5 L112.8,792.6 L111.2,785.3 L109.6,777.6 L108.2,769.6 L106.9,761.0 L105.7,751.9 L104.6,742.2 L103.6,731.8 L102.8,720.5 L102.0,708.2 L101.4,694.5 L100.9,679.0 L100.5,660.9 L100.2,638.6 L100.1,608.0 L100.0,512.0 L100.1,416.0 L100.2,385.4 L100.5,363.1 L100.9,345.0 L101.4,329.5 L102.0,315.8 L102.8,303.5 L103.6,292.2 L104.6,281.8 L105.7,272.1 L106.9,263.0 L108.2,254.4 L109.6,246.4 L111.2,238.7 L112.8,231.4 L114.6,224.5 L116.5,217.9 L118.6,211.6 L120.7,205.5 L123.0,199.8 L125.5,194.2 L128.0,188.9 L130.7,183.8 L133.5,178.9 L136.4,174.2 L139.5,169.7 L142.8,165.3 L146.1,161.2 L149.7,157.2 L153.3,153.3 L157.2,149.7 L161.2,146.1 L165.3,142.8 L169.7,139.5 L174.2,136.4 L178.9,133.5 L183.8,130.7 L188.9,128.0 L194.2,125.5 L199.8,123.0 L205.5,120.7 L211.6,118.6 L217.9,116.5 L224.5,114.6 L231.4,112.8 L238.7,111.2 L246.4,109.6 L254.4,108.2 L263.0,106.9 L272.1,105.7 L281.8,104.6 L292.2,103.6 L303.5,102.8 L315.8,102.0 L329.5,101.4 L345.0,100.9 L363.1,100.5 L385.4,100.2 L416.0,100.1 L512.0,100.0 L608.0,100.1 L638.6,100.2 L660.9,100.5 L679.0,100.9 L694.5,101.4 L708.2,102.0 L720.5,102.8 L731.8,103.6 L742.2,104.6 L751.9,105.7 L761.0,106.9 L769.6,108.2 L777.6,109.6 L785.3,111.2 L792.6,112.8 L799.5,114.6 L806.1,116.5 L812.4,118.6 L818.5,120.7 L824.2,123.0 L829.8,125.5 L835.1,128.0 L840.2,130.7 L845.1,133.5 L849.8,136.4 L854.3,139.5 L858.7,142.8 L862.8,146.1 L866.8,149.7 L870.7,153.3 L874.3,157.2 L877.9,161.2 L881.2,165.3 L884.5,169.7 L887.6,174.2 L890.5,178.9 L893.3,183.8 L896.0,188.9 L898.5,194.2 L901.0,199.8 L903.3,205.5 L905.4,211.6 L907.5,217.9 L909.4,224.5 L911.2,231.4 L912.8,238.7 L914.4,246.4 L915.8,254.4 L917.1,263.0 L918.3,272.1 L919.4,281.8 L920.4,292.2 L921.2,303.5 L922.0,315.8 L922.6,329.5 L923.1,345.0 L923.5,363.1 L923.8,385.4 L923.9,416.0Z" fill="url(#bg)"/>
<g clip-path="url(#tile)">
<!-- selection frame -->
<rect x="282" y="212" width="460" height="600" fill="none" stroke="#89b4fa" stroke-width="22"/>
<!-- sheet -->
<g filter="url(#sh)">
<path d="M322 252H600L702 354V772H322Z" fill="#cdd6f4"/>
</g>
<path d="M600 252L702 354H600Z" fill="#cba6f7"/>
<rect x="382" y="440" width="260" height="30" rx="15" fill="#9399b2" opacity=".6"/>
<rect x="382" y="512" width="260" height="30" rx="15" fill="#9399b2" opacity=".6"/>
<rect x="254" y="184" width="56" height="56" rx="6" fill="#1e1e2e" stroke="#89b4fa" stroke-width="22"/><rect x="714" y="184" width="56" height="56" rx="6" fill="#1e1e2e" stroke="#89b4fa" stroke-width="22"/><rect x="254" y="784" width="56" height="56" rx="6" fill="#1e1e2e" stroke="#89b4fa" stroke-width="22"/><rect x="714" y="784" width="56" height="56" rx="6" fill="#1e1e2e" stroke="#89b4fa" stroke-width="22"/>
<!-- pen nib -->
<g transform="translate(470 580) rotate(135) scale(1.0)" filter="url(#sh)">
<path d="M0 0L-52 -120Q-70 -170 -44 -214H44Q70 -170 52 -120Z" fill="url(#nib)" stroke="#1e1e2e" stroke-width="22" stroke-linejoin="round"/>
<path d="M0 0V-104" stroke="#1e1e2e" stroke-width="12" stroke-linecap="round"/>
<circle cx="0" cy="-132" r="17" fill="#1e1e2e"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"arrow-down","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,5.0],[12.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,12.0],[12.0,19.0],[5.0,12.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"arrow-up","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,12.0],[12.0,5.0],[19.0,12.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,19.0],[12.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"bold","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,12.0],[15.0,12.0],[17.82843,13.17157],[19.0,16.0],[17.82843,18.82843],[15.0,20.0],[7.0,20.0],[6.29289,19.70711],[6.0,19.0],[6.0,5.0],[6.29289,4.29289],[7.0,4.0],[14.0,4.0],[16.82843,5.17157],[18.0,8.0],[16.82843,10.82843],[14.0,12.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.74986,-0.74986],[1.06046,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746],[-0.26511,0.0],[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.74986,-0.74986],[1.06046,0.0]],"o":[[0.0,0.0],[1.06046,0.0],[0.74986,0.74986],[0.0,1.06046],[-0.74986,0.74986],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746],[0.0,0.0],[1.06046,0.0],[0.74986,0.74986],[0.0,1.06046],[-0.74986,0.74986],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"bookmark","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[17.0,3.0],[18.41421,3.58579],[19.0,5.0],[19.0,20.0],[18.76689,20.64145],[18.17657,20.98397],[17.504,20.868],[12.992,18.29],[12.0,18.02665],[11.008,18.29],[6.496,20.868],[5.82343,20.98397],[5.23311,20.64145],[5.0,20.0],[5.0,5.0],[5.58579,3.58579],[7.0,3.0]],"i":[[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.15048,-0.17982],[0.2308,-0.0414],[0.20361,0.1163],[0.0,0.0],[0.34792,0.0],[0.30211,-0.17257],[0.0,0.0],[0.2308,0.0414],[0.15048,0.17982],[8e-05,0.23448],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0]],"o":[[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[-8e-05,0.23448],[-0.15048,0.17982],[-0.2308,0.0414],[0.0,0.0],[-0.30211,-0.17257],[-0.34792,0.0],[0.0,0.0],[-0.20361,0.1163],[-0.2308,-0.0414],[-0.15048,-0.17982],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[17.0,3.0],[18.41421,3.58579],[19.0,5.0],[19.0,20.0],[18.76689,20.64145],[18.17657,20.98397],[17.504,20.868],[12.992,18.29],[12.0,18.02665],[11.008,18.29],[6.496,20.868],[5.82343,20.98397],[5.23311,20.64145],[5.0,20.0],[5.0,5.0],[5.58579,3.58579],[7.0,3.0]],"i":[[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.15048,-0.17982],[0.2308,-0.0414],[0.20361,0.1163],[0.0,0.0],[0.34792,0.0],[0.30211,-0.17257],[0.0,0.0],[0.2308,0.0414],[0.15048,0.17982],[8e-05,0.23448],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0]],"o":[[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[-8e-05,0.23448],[-0.15048,0.17982],[-0.2308,0.0414],[0.0,0.0],[-0.30211,-0.17257],[-0.34792,0.0],[0.0,0.0],[-0.20361,0.1163],[-0.2308,-0.0414],[-0.15048,-0.17982],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":4,"s":[65],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[12,3]},"p":{"a":0,"k":[12,3]},"s":{"a":1,"k":[{"t":0,"s":[100.0,0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[100.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"bug","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,20.0],[12.0,11.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,7.0],[16.82843,8.17157],[18.0,11.0],[18.0,14.0],[16.24264,18.24264],[12.0,20.0],[7.75736,18.24264],[6.0,14.0],[6.0,11.0],[7.17157,8.17157],[10.0,7.0]],"i":[[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.0,0.0],[1.12479,-1.12479],[1.59069,0.0],[1.12479,1.12479],[0.0,1.59069],[0.0,0.0],[-0.74986,0.74986],[-1.06046,0.0]],"o":[[1.06046,0.0],[0.74986,0.74986],[0.0,0.0],[0.0,1.59069],[-1.12479,1.12479],[-1.59069,0.0],[-1.12479,-1.12479],[0.0,0.0],[0.0,-1.06046],[0.74986,-0.74986],[0.0,0.0]],"c":true}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.12,3.88],[16.0,2.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,21.0],[19.89638,18.23668],[17.19,17.0]],"i":[[0.0,0.0],[0.70929,0.74466],[1.02724,0.04885]],"o":[[0.00116,-1.0284],[-0.70929,-0.74466],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,5.0],[19.98175,7.66169],[17.45,8.97]],"i":[[0.0,0.0],[0.65449,-0.73193],[0.97564,-0.11046]],"o":[[-0.00113,0.98187],[-0.65449,0.73193],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,13.0],[18.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,21.0],[4.10362,18.23668],[6.81,17.0]],"i":[[0.0,0.0],[-0.70929,0.74466],[-1.02724,0.04885]],"o":[[-0.00116,-1.0284],[0.70929,-0.74466],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,5.0],[4.01825,7.66169],[6.55,8.97]],"i":[[0.0,0.0],[-0.65449,-0.73193],[-0.97564,-0.11046]],"o":[[0.00113,0.98187],[0.65449,0.73193],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,13.0],[2.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,2.0],[9.88,3.88]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,7.13],[9.0,6.0],[9.87868,3.87868],[12.0,3.0],[14.12132,3.87868],[15.0,6.0],[15.0,7.13]],"i":[[0.0,0.0],[0.0,0.0],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"calendar","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,2.0],[8.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,2.0],[16.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,9.0],[21.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"check","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,12.0],[9.0,17.0],[20.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"tm","s":{"a":0,"k":0},"e":{"a":1,"k":[{"t":0,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":1,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":2,"s":[1],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":0},"m":1},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"chevron-down","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,9.0],[12.0,15.0],[18.0,9.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"chevron-left","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,18.0],[9.0,12.0],[15.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"chevron-right","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,18.0],[15.0,12.0],[9.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[98],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[90],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"chevron-up","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,15.0],[12.0,9.0],[6.0,15.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"circle-check","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,12.0],[10.5,14.5],[16.0,9.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"tm","s":{"a":0,"k":0},"e":{"a":1,"k":[{"t":0,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":1,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":2,"s":[1],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":0},"m":1},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"circle-question-mark","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.09,9.0],[10.39995,7.40913],[12.42718,7.03871],[14.21508,8.06353],[14.92,10.0],[11.92,13.0]],"i":[[0.0,0.0],[-0.61065,0.35889],[-0.69811,-0.11974],[-0.45615,-0.54187],[0.00106,-0.70831],[0.0,0.0]],"o":[[0.23505,-0.66817],[0.61065,-0.35889],[0.69811,0.11974],[0.45615,0.54187],[0.0,2.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,17.0],[12.01,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"circle","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"clipboard","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,2.0],[15.0,2.0],[15.70711,2.29289],[16.0,3.0],[16.0,5.0],[15.70711,5.70711],[15.0,6.0],[9.0,6.0],[8.29289,5.70711],[8.0,5.0],[8.0,3.0],[8.29289,2.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,4.0],[18.0,4.0],[19.41421,4.58579],[20.0,6.0],[20.0,20.0],[19.41421,21.41421],[18.0,22.0],[6.0,22.0],[4.58579,21.41421],[4.0,20.0],[4.0,6.0],[4.58579,4.58579],[6.0,4.0],[8.0,4.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"copy","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,8.0],[20.0,8.0],[21.41421,8.58579],[22.0,10.0],[22.0,20.0],[21.41421,21.41421],[20.0,22.0],[10.0,22.0],[8.58579,21.41421],[8.0,20.0],[8.0,10.0],[8.58579,8.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,16.0],[2.0,14.0],[2.0,4.0],[4.0,2.0],[14.0,2.0],[16.0,4.0]],"i":[[0.0,0.0],[0.0,1.1],[0.0,0.0],[-1.1,0.0],[0.0,0.0],[0.0,-1.1]],"o":[[-1.1,0.0],[0.0,0.0],[0.0,-1.1],[0.0,0.0],[1.1,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.7,-1.7],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"diamond","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-4.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.7,10.3],[2.07548,11.38085],[2.07548,12.62915],[2.7,13.71],[10.29,21.3],[11.37085,21.92452],[12.61915,21.92452],[13.7,21.3],[21.29,13.71],[21.91452,12.62915],[21.91452,11.38085],[21.29,10.3],[13.7,2.71],[12.61915,2.08548],[11.37085,2.08548],[10.29,2.71]],"i":[[0.0,0.0],[0.10963,-0.40885],[-0.10963,-0.40885],[-0.29947,-0.29916],[0.0,0.0],[-0.40885,-0.10963],[-0.40885,0.10963],[-0.29916,0.29947],[0.0,0.0],[-0.10963,0.40885],[0.10963,0.40885],[0.29947,0.29916],[0.0,0.0],[0.40885,0.10963],[0.40885,-0.10963],[0.29916,-0.29947]],"o":[[-0.29947,0.29916],[-0.10963,0.40885],[0.10963,0.40885],[0.0,0.0],[0.29916,0.29947],[0.40885,0.10963],[0.40885,-0.10963],[0.0,0.0],[0.29947,-0.29916],[0.10963,-0.40885],[-0.10963,-0.40885],[0.0,0.0],[-0.29916,-0.29947],[-0.40885,-0.10963],[-0.40885,0.10963],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"download","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,15.0],[12.0,3.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,15.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,15.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[7.0,10.0],[12.0,15.0],[17.0,10.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"eraser","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,21.0],[8.0,21.0],[7.23138,20.84831],[6.58,20.413],[2.586,16.414],[2.00043,15.0],[2.586,13.586],[12.586,3.586],[13.48273,3.06811],[14.51827,3.06811],[15.415,3.586],[21.414,9.586],[21.99957,11.0],[21.414,12.414],[12.834,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.2437,0.10074],[0.1863,0.18662],[0.0,0.0],[0.0,0.53013],[-0.3748,0.37491],[0.0,0.0],[-0.33917,0.0909],[-0.33917,-0.0909],[-0.24824,-0.24834],[0.0,0.0],[0.0,-0.53013],[0.3748,-0.37491],[0.0,0.0]],"o":[[0.0,0.0],[-0.2637,0.0006],[-0.2437,-0.10074],[0.0,0.0],[-0.3748,-0.37491],[0.0,-0.53013],[0.0,0.0],[0.24824,-0.24834],[0.33917,-0.0909],[0.33917,0.0909],[0.0,0.0],[0.3748,0.37491],[0.0,0.53013],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.082,11.09],[13.91,19.918]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"file-text","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,22.0],[4.58579,21.41421],[4.0,20.0],[4.0,4.0],[4.58579,2.58579],[6.0,2.0],[14.0,2.0],[14.92253,2.18277],[15.704,2.706],[19.292,6.294],[19.81669,7.07616],[20.0,8.0],[20.0,20.0],[19.41421,21.41421],[18.0,22.0]],"i":[[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.29244,-0.12116],[-0.22343,-0.22424],[0.0,0.0],[-0.12152,-0.29281],[0.00052,-0.31702],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0]],"o":[[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.31655,-0.00051],[0.29244,0.12116],[0.0,0.0],[0.22484,0.2235],[0.12152,0.29281],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,2.0],[14.0,7.0],[14.29289,7.70711],[15.0,8.0],[20.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.18746,-0.18746],[-0.26511,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.26511],[0.18746,0.18746],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,9.0],[8.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,13.0],[8.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,17.0],[8.0,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"flame","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,3.0],[16.0,9.5],[19.0,15.0],[16.94975,19.94975],[12.0,22.0],[7.05025,19.94975],[5.0,15.0],[6.0,12.0],[6.73223,13.76777],[8.5,14.5],[10.26777,13.76777],[11.0,12.0],[9.5,7.0]],"i":[[-1.66667,1.33333],[-2.0,-1.66667],[0.0,-2.0],[1.31225,-1.31225],[1.8558,0.0],[1.31225,1.31225],[0.0,1.8558],[-0.649,0.86533],[-0.46866,-0.46866],[-0.66279,0.0],[-0.46866,0.46866],[0.0,0.66279],[0.0,2.0]],"o":[[0.66667,2.66667],[2.0,1.66667],[0.0,1.8558],[-1.31225,1.31225],[-1.8558,0.0],[-1.31225,-1.31225],[0.0,-1.08167],[0.0,0.66279],[0.46866,0.46866],[0.66279,0.0],[0.46866,-0.46866],[0.0,-2.0],[0.0,-1.33333]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"folder","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,20.0],[2.58579,19.41421],[2.0,18.0],[2.0,5.0],[2.58579,3.58579],[4.0,3.0],[7.93,3.0],[8.8785,3.2394],[9.6,3.9],[10.41,5.1],[11.1403,5.76538],[12.1,6.0],[18.0,6.0]],"i":[[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.29146,-0.15707],[-0.1821,-0.27651],[0.0,0.0],[-0.29523,-0.15722],[-0.33447,0.00328],[0.0,0.0]],"o":[[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.33109,5e-05],[0.29146,0.15707],[0.0,0.0],[0.18395,0.27936],[0.29523,0.15722],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":1,"k":[{"t":0,"s":[{"v":[[6.0,3.0],[7.93,3.0],[8.8785,3.2394],[9.6,3.9],[10.41,5.1],[11.1403,5.76538],[12.1,6.0],[20.0,6.0],[21.41421,6.58579],[22.0,8.0],[22.0,18.0],[21.41421,19.41421],[20.0,20.0],[4.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.29146,-0.15707],[-0.1821,-0.27651],[0.0,0.0],[-0.29523,-0.15722],[-0.33447,0.00328],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.33109,5e-05],[0.29146,0.15707],[0.0,0.0],[0.18395,0.27936],[0.29523,0.15722],[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[{"v":[[6.0,14.0],[7.5,11.1],[8.21761,10.30895],[9.24,10.0],[14.62,10.0],[20.0,10.0],[21.14376,10.35688],[21.87829,11.30345],[21.94,12.5],[20.4,18.5],[19.68292,19.58529],[18.45,20.0],[11.225,20.0],[4.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.30646,0.19374],[-0.36247,0.0084],[-2.69,0.0],[0.0,0.0],[-0.33578,-0.23301],[-0.14234,-0.38312],[0.10218,-0.39573],[0.0,0.0],[0.35321,-0.2717],[0.44562,0.00301],[3.6125,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.16306,-0.32383],[0.30646,-0.19374],[0.0,0.0],[2.69,0.0],[0.40871,-0.00072],[0.33578,0.23301],[0.14234,0.38312],[0.0,0.0],[-0.1114,0.43148],[-0.35321,0.2717],[0.0,0.0],[-3.6125,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[{"v":[[6.0,14.0],[7.5,11.1],[8.21761,10.30895],[9.24,10.0],[14.62,10.0],[20.0,10.0],[21.14376,10.35688],[21.87829,11.30345],[21.94,12.5],[20.4,18.5],[19.68292,19.58529],[18.45,20.0],[11.225,20.0],[4.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.30646,0.19374],[-0.36247,0.0084],[-2.69,0.0],[0.0,0.0],[-0.33578,-0.23301],[-0.14234,-0.38312],[0.10218,-0.39573],[0.0,0.0],[0.35321,-0.2717],[0.44562,0.00301],[3.6125,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.16306,-0.32383],[0.30646,-0.19374],[0.0,0.0],[2.69,0.0],[0.40871,-0.00072],[0.33578,0.23301],[0.14234,0.38312],[0.0,0.0],[-0.1114,0.43148],[-0.35321,0.2717],[0.0,0.0],[-3.6125,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]}},{"ty":"tm","s":{"a":1,"k":[{"t":0,"s":[27.87664786438373],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":3,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"e":{"a":0,"k":100},"o":{"a":0,"k":0},"m":1},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,6.0],[19.41421,6.58579],[20.0,8.0],[20.0,10.0]],"i":[[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":3,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"git-branch","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,6.0],[8.63604,8.63604],[6.0,15.0],[6.0,3.0]],"i":[[0.0,0.0],[1.68718,-1.68718],[0.0,-2.38603],[0.0,0.0]],"o":[[-2.38603,0.0],[-1.68718,1.68718],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,6.0],[20.12132,8.12132],[18.0,9.0],[15.87868,8.12132],[15.0,6.0],[15.87868,3.87868],[18.0,3.0],[20.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[18.0,6.0]},"p":{"a":0,"k":[18.0,6.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,18.0],[8.12132,20.12132],[6.0,21.0],[3.87868,20.12132],[3.0,18.0],[3.87868,15.87868],[6.0,15.0],[8.12132,15.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[6.0,18.0]},"p":{"a":0,"k":[6.0,18.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":14.5,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"git-commit-horizontal","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[14.12132,14.12132],[12.0,15.0],[9.87868,14.12132],[9.0,12.0],[9.87868,9.87868],[12.0,9.0],[14.12132,9.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12.0,12.0]},"p":{"a":0,"k":[12.0,12.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12.3,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":16.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,12.0],[9.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[21.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"git-fork","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,18.0],[14.12132,20.12132],[12.0,21.0],[9.87868,20.12132],[9.0,18.0],[9.87868,15.87868],[12.0,15.0],[14.12132,15.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12.0,18.0]},"p":{"a":0,"k":[12.0,18.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12.3,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":16.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,6.0],[8.12132,8.12132],[6.0,9.0],[3.87868,8.12132],[3.0,6.0],[3.87868,3.87868],[6.0,3.0],[8.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[6.0,6.0]},"p":{"a":0,"k":[6.0,6.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,6.0],[20.12132,8.12132],[18.0,9.0],[15.87868,8.12132],[15.0,6.0],[15.87868,3.87868],[18.0,3.0],[20.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[18.0,6.0]},"p":{"a":0,"k":[18.0,6.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":14.5,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,9.0],[16.24264,13.24264],[12.0,15.0],[7.75736,13.24264],[6.0,9.0]],"i":[[0.0,0.0],[1.12479,-1.12479],[1.59069,0.0],[1.12479,1.12479],[0.0,1.59069]],"o":[[0.0,1.59069],[-1.12479,1.12479],[-1.59069,0.0],[-1.12479,-1.12479],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"grid-3x3","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,9.0],[21.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-1.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,15.0],[21.0,15.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,1.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,3.0],[9.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.8,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,3.0],[15.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.8,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"hand","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,11.0],[18.0,6.0],[17.41421,4.58579],[16.0,4.0],[14.58579,4.58579],[14.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.37493,-0.37493],[0.0,-0.53023]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,10.0],[14.0,4.0],[13.41421,2.58579],[12.0,2.0],[10.58579,2.58579],[10.0,4.0],[10.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,10.5],[10.0,6.0],[9.41421,4.58579],[8.0,4.0],[6.58579,4.58579],[6.0,6.0],[6.0,14.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,8.0],[18.58579,6.58579],[20.0,6.0],[21.41421,6.58579],[22.0,8.0],[22.0,14.0],[19.65685,19.65685],[14.0,22.0],[12.0,22.0],[6.01,19.66],[2.41,16.06],[1.89512,14.66694],[2.48272,13.30296],[3.84877,12.7202],[5.24,13.24],[7.0,15.0]],"i":[[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[1.49972,-1.49972],[2.12092,0.0],[0.0,0.0],[1.49,1.48],[0.0,0.0],[-0.01353,0.51305],[-0.36355,0.36227],[-0.5131,0.01172],[-0.37971,-0.34529],[0.0,0.0]],"o":[[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,2.12092],[-1.49972,1.49972],[0.0,0.0],[-2.8,0.0],[0.0,0.0],[-0.34395,-0.38093],[0.01353,-0.51305],[0.36355,-0.36227],[0.5131,-0.01172],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"highlighter","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,11.0],[3.0,17.0],[3.0,20.0],[12.0,20.0],[15.0,17.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[17.4,16.6],[16.0,17.17171],[14.6,16.6],[9.4,11.4],[8.82829,10.0],[9.4,8.6],[14.0,4.0]],"i":[[0.0,0.0],[0.0,0.0],[0.52331,0.0],[0.37372,0.36632],[0.0,0.0],[0.0,0.52331],[-0.36632,0.37372],[0.0,0.0]],"o":[[0.0,0.0],[-0.37372,0.36632],[-0.52331,0.0],[0.0,0.0],[-0.36632,-0.37372],[0.0,-0.52331],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"image","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.0,9.0],[10.41421,10.41421],[9.0,11.0],[7.58579,10.41421],[7.0,9.0],[7.58579,7.58579],[9.0,7.0],[10.41421,7.58579]],"i":[[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493],[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493]],"o":[[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":1,"k":[{"t":0,"s":[{"v":[[21.0,15.0],[17.914,11.914],[16.5,11.32843],[15.086,11.914],[6.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.53013,0.0],[0.37491,-0.3748],[0.0,0.0]],"o":[[0.0,0.0],[-0.37491,-0.3748],[-0.53013,0.0],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[{"v":[[21.0,15.0],[17.914,13.914],[16.5,13.32843],[15.086,13.914],[6.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.53013,0.0],[0.37491,-0.3748],[0.0,0.0]],"o":[[0.0,0.0],[-0.37491,-0.3748],[-0.53013,0.0],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[{"v":[[21.0,15.0],[17.914,11.914],[16.5,11.32843],[15.086,11.914],[6.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.53013,0.0],[0.37491,-0.3748],[0.0,0.0]],"o":[[0.0,0.0],[-0.37491,-0.3748],[-0.53013,0.0],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"toggle":["folder","chevron-right","panel-left","panel-right","star","bookmark","lock","sparkles","maximize"],"oneshot":["search","settings","plus","x","check","copy","trash-2","file-text","tag","layers","git-branch","link","list","download","upload","pencil","pen","eraser","hand","mouse-pointer-2","type","square","circle","diamond","move-up-right","slash","image","calendar","clipboard","quote","info","bug","triangle-alert","flame","zap","git-fork","git-commit-horizontal","undo-2","refresh-cw","notebook-pen","layout-dashboard","circle-check","circle-question-mark","bold","italic","strikethrough","highlighter","scissors","message-square-quote","arrow-up","arrow-down","chevron-up","chevron-down","chevron-left","grid-3x3"]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"info","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,16.0],[12.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,8.0],[12.01,8.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"italic","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,4.0],[10.0,4.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,20.0],[5.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,4.0],[9.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"layers","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.83,2.18],[12.0,1.99964],[11.17,2.18],[2.6,6.08],[2.07672,6.61928],[2.07672,7.37072],[2.6,7.91],[11.18,11.82],[12.01,12.00036],[12.84,11.82],[21.42,7.92],[21.94328,7.38072],[21.94328,6.62928],[21.42,6.09]],"i":[[0.0,0.0],[0.28638,0.0],[0.26055,-0.11885],[0.0,0.0],[0.09765,-0.24087],[-0.09765,-0.24087],[-0.23782,-0.10486],[0.0,0.0],[-0.28638,0.0],[-0.26055,0.11885],[0.0,0.0],[-0.09765,0.24087],[0.09765,0.24087],[0.23782,0.10486]],"o":[[-0.26055,-0.11885],[-0.28638,0.0],[0.0,0.0],[-0.23782,0.10486],[-0.09765,0.24087],[0.09765,0.24087],[0.0,0.0],[0.26055,0.11885],[0.28638,0.0],[0.0,0.0],[0.23782,-0.10486],[0.09765,-0.24087],[-0.09765,-0.24087],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,12.0],[2.15672,12.53995],[2.58,12.91],[11.18,16.82],[12.005,16.99808],[12.83,16.82],[21.41,12.92],[21.8418,12.54773],[22.0,12.0]],"i":[[0.0,0.0],[-0.10279,-0.16128],[-0.17356,-0.08032],[0.0,0.0],[-0.28453,0.0],[-0.25919,0.11737],[0.0,0.0],[-0.10475,0.16334],[0.00153,0.19404]],"o":[[-0.00047,0.19125],[0.10279,0.16128],[0.0,0.0],[0.25919,0.11737],[0.28453,0.0],[0.0,0.0],[0.17699,-0.07955],[0.10475,-0.16334],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,17.0],[2.15672,17.53995],[2.58,17.91],[11.18,21.82],[12.005,21.99808],[12.83,21.82],[21.41,17.92],[21.8418,17.54773],[22.0,17.0]],"i":[[0.0,0.0],[-0.10279,-0.16128],[-0.17356,-0.08032],[0.0,0.0],[-0.28453,0.0],[-0.25919,0.11737],[0.0,0.0],[-0.10475,0.16334],[0.00153,0.19404]],"o":[[-0.00047,0.19125],[0.10279,0.16128],[0.0,0.0],[0.25919,0.11737],[0.28453,0.0],[0.0,0.0],[0.17699,-0.07955],[0.10475,-0.16334],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"layout-dashboard","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,3.0],[9.0,3.0],[9.70711,3.29289],[10.0,4.0],[10.0,11.0],[9.70711,11.70711],[9.0,12.0],[4.0,12.0],[3.29289,11.70711],[3.0,11.0],[3.0,4.0],[3.29289,3.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,3.0],[20.0,3.0],[20.70711,3.29289],[21.0,4.0],[21.0,7.0],[20.70711,7.70711],[20.0,8.0],[15.0,8.0],[14.29289,7.70711],[14.0,7.0],[14.0,4.0],[14.29289,3.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[20.0,12.0],[20.70711,12.29289],[21.0,13.0],[21.0,20.0],[20.70711,20.70711],[20.0,21.0],[15.0,21.0],[14.29289,20.70711],[14.0,20.0],[14.0,13.0],[14.29289,12.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,16.0],[9.0,16.0],[9.70711,16.29289],[10.0,17.0],[10.0,20.0],[9.70711,20.70711],[9.0,21.0],[4.0,21.0],[3.29289,20.70711],[3.0,20.0],[3.0,17.0],[3.29289,16.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"link","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,13.0],[12.25562,14.68953],[15.06663,14.89085],[17.54,13.54],[20.54,10.54],[21.94337,7.02299],[20.47909,3.53091],[16.98701,2.06663],[13.47,3.47],[11.75,5.18]],"i":[[0.0,0.0],[-0.89822,-0.33521],[-0.93683,0.20379],[-0.67781,0.67805],[0.0,0.0],[0.01139,1.3105],[0.9267,0.9267],[1.3105,0.01139],[0.94267,-0.91046],[0.0,0.0]],"o":[[0.57426,0.76772],[0.89822,0.33521],[0.93683,-0.20379],[0.0,0.0],[0.91046,-0.94267],[-0.01139,-1.3105],[-0.9267,-0.9267],[-1.3105,-0.01139],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.6,-1.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,11.0],[11.74438,9.31047],[8.93337,9.10915],[6.46,10.46],[3.46,13.46],[2.05663,16.97701],[3.52091,20.46909],[7.01299,21.93337],[10.53,20.53],[12.24,18.82]],"i":[[0.0,0.0],[0.89822,0.33521],[0.93683,-0.20379],[0.67781,-0.67805],[0.0,0.0],[-0.01139,-1.3105],[-0.9267,-0.9267],[-1.3105,-0.01139],[-0.94267,0.91046],[0.0,0.0]],"o":[[-0.57426,-0.76772],[-0.89822,-0.33521],[-0.93683,0.20379],[0.0,0.0],[-0.91046,0.94267],[0.01139,1.3105],[0.9267,0.9267],[1.3105,0.01139],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,1.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"list","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,5.0],[3.01,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,12.0],[3.01,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,19.0],[3.01,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,5.0],[21.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,12.0],[21.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,19.0],[21.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"lock","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[0,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,11.0],[19.0,11.0],[20.41421,11.58579],[21.0,13.0],[21.0,20.0],[20.41421,21.41421],[19.0,22.0],[5.0,22.0],[3.58579,21.41421],[3.0,20.0],[3.0,13.0],[3.58579,11.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":1,"k":[{"t":0,"s":[{"v":[[7.0,11.0],[7.0,7.0],[8.28937,3.64367],[11.4975,2.02029],[14.96547,2.96931],[16.9,6.0],[16.9,6.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.83085,0.91993],[-1.23331,0.12458],[-0.99803,-0.73519],[-0.24667,-1.2148],[0,0]],"o":[[0.0,0.0],[-0.00125,-1.23959],[0.83085,-0.91993],[1.23331,-0.12458],[0.99803,0.73519],[0.0,0.0],[0,0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[{"v":[[7.0,11.0],[7.0,7.0],[8.46447,3.46447],[12.0,2.0],[15.53553,3.46447],[17.0,7.0],[17.0,11.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.93732,0.93732],[-1.32557,0.0],[-0.93732,-0.93732],[0.0,-1.32557],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-1.32557],[0.93732,-0.93732],[1.32557,-0.0],[0.93732,0.93732],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[{"v":[[7.0,11.0],[7.0,7.0],[8.46447,3.46447],[12.0,2.0],[15.53553,3.46447],[17.0,7.0],[17.0,11.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.93732,0.93732],[-1.32557,0.0],[-0.93732,-0.93732],[0.0,-1.32557],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-1.32557],[0.93732,-0.93732],[1.32557,-0.0],[0.93732,0.93732],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"maximize","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,3.0],[5.0,3.0],[3.58579,3.58579],[3.0,5.0],[3.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.875,-1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[-1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,8.0],[21.0,5.0],[20.41421,3.58579],[19.0,3.0],[16.0,3.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.875,-1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,16.0],[3.0,19.0],[3.58579,20.41421],[5.0,21.0],[8.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.875,1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[-1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,21.0],[19.0,21.0],[20.41421,20.41421],[21.0,19.0],[21.0,16.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.875,1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"message-square-quote","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,14.0],[15.41421,13.41421],[16.0,12.0],[16.0,8.0],[14.0,8.0]],"i":[[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[0.0,0.0]],"o":[[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,17.0],[21.41421,18.41421],[20.0,19.0],[6.828,19.0],[5.414,19.586],[3.212,21.788],[2.70999,21.99591],[2.20798,21.78798],[2.0,21.286],[2.0,5.0],[2.58579,3.58579],[4.0,3.0],[20.0,3.0],[21.41421,3.58579],[22.0,5.0]],"i":[[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37484,-0.37495],[0.0,0.0],[0.18821,0.0],[0.13309,0.13308],[2e-05,0.18821],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023]],"o":[[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53019,0.00011],[0.0,0.0],[-0.1331,0.13307],[-0.18821,-0.0],[-0.13309,-0.13308],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,14.0],[9.41421,13.41421],[10.0,12.0],[10.0,8.0],[8.0,8.0]],"i":[[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[0.0,0.0]],"o":[[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"mouse-pointer-2","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.037,4.688],[4.00494,4.39856],[4.14118,4.14118],[4.39856,4.00494],[4.688,4.037],[20.688,10.537],[20.92331,10.73498],[20.99825,11.03324],[20.88446,11.31893],[20.625,11.484],[14.501,13.064],[13.58623,13.58533],[13.063,14.499],[11.484,20.625],[11.31893,20.88446],[11.03324,20.99825],[10.73498,20.92331],[10.537,20.688]],"i":[[0.0,0.0],[-0.01858,0.0975],[-0.07018,0.07018],[-0.0975,0.01858],[-0.09107,-0.03946],[0.0,0.0],[-0.05568,-0.08906],[0.00697,-0.1048],[0.06699,-0.0809],[0.10167,-0.0264],[0.0,0.0],[0.25287,-0.25234],[0.08967,-0.3458],[0.0,0.0],[0.0809,-0.06699],[0.1048,-0.00697],[0.08906,0.05568],[0.03963,0.09727]],"o":[[-0.03946,-0.09107],[0.01858,-0.0975],[0.07018,-0.07018],[0.0975,-0.01858],[0.0,0.0],[0.09727,0.03963],[0.05568,0.08906],[-0.00697,0.1048],[-0.06699,0.0809],[0.0,0.0],[-0.34598,0.08895],[-0.25287,0.25234],[0.0,0.0],[-0.0264,0.10167],[-0.0809,0.06699],[-0.1048,0.00697],[-0.08906,-0.05568],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"move-up-right","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.8,-1.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[13.0,5.0],[19.0,5.0],[19.0,11.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,5.0],[5.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"notebook-pen","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[13.4,2.0],[6.0,2.0],[4.58579,2.58579],[4.0,4.0],[4.0,20.0],[4.58579,21.41421],[6.0,22.0],[18.0,22.0],[19.41421,21.41421],[20.0,20.0],[20.0,12.6]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.0,0.0],[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,6.0],[6.0,6.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,10.0],[6.0,10.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,14.0],[6.0,14.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,18.0],[6.0,18.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.378,5.626],[22.00015,4.124],[21.378,2.622],[19.876,1.99985],[18.374,2.622],[13.364,7.634],[12.858,8.488],[12.021,11.358],[12.04631,11.70598],[12.29302,11.95269],[12.641,11.978],[15.511,11.141],[16.365,10.635]],"i":[[0.0,0.0],[0.0,0.56314],[0.3982,0.3982],[0.56314,0.0],[0.3982,-0.3982],[0.0,0.0],[0.09421,-0.32265],[0.0,0.0],[-0.04993,-0.10916],[-0.10916,-0.04993],[-0.11524,0.03361],[0.0,0.0],[-0.23761,0.23774]],"o":[[0.3982,-0.3982],[0.0,-0.56314],[-0.3982,-0.3982],[-0.56314,0.0],[0.0,0.0],[-0.23774,0.23761],[0.0,0.0],[-0.03361,0.11524],[0.04993,0.10916],[0.10916,0.04993],[0.0,0.0],[0.32265,-0.09421],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"panel-left","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,3.0],[9.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[-4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[-4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,4.0],[5.0,4.0],[5.0,20.0],[3.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"panel-right","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,3.0],[15.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,4.0],[21.0,4.0],[21.0,20.0],[19.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"pen","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.174,6.812],[21.99988,4.81885],[21.1745,2.8255],[19.18135,1.99962],[17.188,2.825],[3.842,16.174],[3.342,17.004],[2.021,21.356],[2.04503,21.70639],[2.29357,21.95453],[2.644,21.978],[6.997,20.658],[7.827,20.161]],"i":[[0.0,0.0],[-9e-05,0.74733],[0.52837,0.52851],[0.74733,9e-05],[0.52851,-0.52837],[0.0,0.0],[0.09611,-0.31345],[0.0,0.0],[-0.0501,-0.11002],[-0.1101,-0.04993],[-0.11577,0.0348],[0.0,0.0],[-0.23181,0.23108]],"o":[[0.52851,-0.52837],[9e-05,-0.74733],[-0.52837,-0.52851],[-0.74733,-9e-05],[0.0,0.0],[-0.23217,0.23149],[0.0,0.0],[-0.03461,0.11583],[0.0501,0.11002],[0.1101,0.04993],[0.0,0.0],[0.31315,-0.09524],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"pencil","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.174,6.812],[21.99988,4.81885],[21.1745,2.8255],[19.18135,1.99962],[17.188,2.825],[3.842,16.174],[3.342,17.004],[2.021,21.356],[2.04503,21.70639],[2.29357,21.95453],[2.644,21.978],[6.997,20.658],[7.827,20.161]],"i":[[0.0,0.0],[-9e-05,0.74733],[0.52837,0.52851],[0.74733,9e-05],[0.52851,-0.52837],[0.0,0.0],[0.09611,-0.31345],[0.0,0.0],[-0.0501,-0.11002],[-0.1101,-0.04993],[-0.11577,0.0348],[0.0,0.0],[-0.23181,0.23108]],"o":[[0.52851,-0.52837],[9e-05,-0.74733],[-0.52837,-0.52851],[-0.74733,-9e-05],[0.0,0.0],[-0.23217,0.23149],[0.0,0.0],[-0.03461,0.11583],[0.0501,0.11002],[0.1101,0.04993],[0.0,0.0],[0.31315,-0.09524],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,5.0],[19.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"plus","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":8,"s":[50],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":14,"s":[-7],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":20,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,12.0],[19.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,5.0],[12.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"quote","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,3.0],[14.58579,3.58579],[14.0,5.0],[14.0,11.0],[14.58579,12.41421],[16.0,13.0],[16.70711,13.29289],[17.0,14.0],[17.0,15.0],[16.41421,16.41421],[15.0,17.0],[14.29289,17.29289],[14.0,18.0],[14.0,20.0],[14.29289,20.70711],[15.0,21.0],[19.24264,19.24264],[21.0,15.0],[21.0,5.0],[20.41421,3.58579],[19.0,3.0]],"i":[[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[-0.18746,-0.18746],[-0.26511,0.0],[-1.12479,1.12479],[0.0,1.59069],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0]],"o":[[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[-0.26511,0.0],[-0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[0.18746,0.18746],[1.59069,0.0],[1.12479,-1.12479],[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[3.58579,3.58579],[3.0,5.0],[3.0,11.0],[3.58579,12.41421],[5.0,13.0],[5.70711,13.29289],[6.0,14.0],[6.0,15.0],[5.41421,16.41421],[4.0,17.0],[3.29289,17.29289],[3.0,18.0],[3.0,20.0],[3.29289,20.70711],[4.0,21.0],[8.24264,19.24264],[10.0,15.0],[10.0,5.0],[9.41421,3.58579],[8.0,3.0]],"i":[[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[-0.18746,-0.18746],[-0.26511,0.0],[-1.12479,1.12479],[0.0,1.59069],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0]],"o":[[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[-0.26511,0.0],[-0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[0.18746,0.18746],[1.59069,0.0],[1.12479,-1.12479],[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"refresh-cw","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[360],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,12.0],[5.63604,5.63604],[12.0,3.0],[18.74,5.74],[21.0,8.0]],"i":[[0.0,0.0],[-1.68718,1.68718],[-2.38603,0.0],[-1.80835,-1.74817],[0.0,0.0]],"o":[[-0.0,-2.38603],[1.68718,-1.68718],[2.51518,0.00946],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,3.0],[21.0,8.0],[16.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,12.0],[18.36396,18.36396],[12.0,21.0],[5.26,18.26],[3.0,16.0]],"i":[[0.0,0.0],[1.68718,-1.68718],[2.38603,0.0],[1.80835,1.74817],[0.0,0.0]],"o":[[0.0,2.38603],[-1.68718,1.68718],[-2.51518,-0.00946],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,16.0],[3.0,16.0],[3.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"scissors","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,6.0],[8.12132,8.12132],[6.0,9.0],[3.87868,8.12132],[3.0,6.0],[3.87868,3.87868],[6.0,3.0],[8.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.12,8.12],[12.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[20.0,4.0],[8.12,15.88]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,18.0],[8.12132,20.12132],[6.0,21.0],[3.87868,20.12132],[3.0,18.0],[3.87868,15.87868],[6.0,15.0],[8.12132,15.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.8,14.8],[20.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"search","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,21.0],[16.66,16.66]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,11.0],[16.65685,16.65685],[11.0,19.0],[5.34315,16.65685],[3.0,11.0],[5.34315,5.34315],[11.0,3.0],[16.65685,5.34315]],"i":[[0.0,-2.12092],[1.49972,-1.49972],[2.12092,0.0],[1.49972,1.49972],[0.0,2.12092],[-1.49972,1.49972],[-2.12092,0.0],[-1.49972,-1.49972]],"o":[[0.0,2.12092],[-1.49972,1.49972],[-2.12092,0.0],[-1.49972,-1.49972],[-0.0,-2.12092],[1.49972,-1.49972],[2.12092,-0.0],[1.49972,1.49972]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[11,11]},"p":{"a":1,"k":[{"t":0,"s":[11,11],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[9.2,11],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[11,11],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[110.0,110.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[96.5,96.5,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.2,101.2,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[10],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-6.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"settings","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[45],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.671,4.136],[10.4261,2.62628],[12.0005,2.01743],[13.5749,2.62628],[14.33,4.136],[14.91364,5.48635],[16.18784,6.22154],[17.649,6.051],[19.331,5.95349],[20.64252,7.0111],[20.90364,8.67557],[19.979,10.084],[19.10158,11.26419],[19.10158,12.73481],[19.979,13.915],[20.90364,15.32343],[20.64252,16.9879],[19.331,18.04551],[17.649,17.948],[16.18784,17.77746],[14.91364,18.51265],[14.33,19.863],[13.5749,21.37272],[12.0005,21.98157],[10.4261,21.37272],[9.671,19.863],[9.08728,18.51216],[7.81258,17.7769],[6.351,17.948],[4.669,18.04551],[3.35748,16.9879],[3.09636,15.32343],[4.021,13.915],[4.89842,12.73481],[4.89842,11.26419],[4.021,10.084],[3.0979,8.67598],[3.35898,7.01271],[4.66909,5.95524],[6.35,6.051],[7.81116,6.22154],[9.08536,5.48635],[9.669,4.136]],"i":[[0.0,0.0],[-0.43064,0.39165],[-0.5821,-0.0],[-0.43064,-0.39165],[-0.05508,-0.57949],[-0.3346,-0.37561],[-0.49264,-0.10169],[-0.45598,0.21241],[-0.55316,-0.17741],[-0.2906,-0.50301],[0.12261,-0.56783],[0.47226,-0.33828],[0.15802,-0.47739],[-0.15802,-0.47739],[-0.41164,-0.28883],[-0.12261,-0.56783],[0.2906,-0.50301],[0.55316,-0.17741],[0.52895,0.24015],[0.49264,-0.10169],[0.3346,-0.37561],[0.04432,-0.50107],[0.43064,-0.39165],[0.5821,0.0],[0.43064,0.39165],[0.05508,0.57949],[0.33472,0.37573],[0.49283,0.10161],[0.45604,-0.21269],[0.55316,0.17741],[0.2906,0.50301],[-0.12261,0.56783],[-0.47226,0.33828],[-0.15802,0.47739],[0.15802,0.47739],[0.41164,0.28883],[0.12231,0.56745],[-0.29029,0.50268],[-0.55261,0.17768],[-0.52886,-0.23929],[-0.49264,0.10169],[-0.3346,0.37561],[-0.04432,0.50107]],"o":[[0.05508,-0.57949],[0.43064,-0.39165],[0.5821,0.0],[0.43064,0.39165],[0.04432,0.50107],[0.3346,0.37561],[0.49264,0.10169],[0.52895,-0.24015],[0.55316,0.17741],[0.2906,0.50301],[-0.12261,0.56783],[-0.41164,0.28883],[-0.15802,0.47739],[0.15802,0.47739],[0.47226,0.33828],[0.12261,0.56783],[-0.2906,0.50301],[-0.55316,0.17741],[-0.45598,-0.21241],[-0.49264,0.10169],[-0.3346,0.37561],[-0.05508,0.57949],[-0.43064,0.39165],[-0.5821,0.0],[-0.43064,-0.39165],[-0.04423,-0.50125],[-0.33472,-0.37573],[-0.49283,-0.10161],[-0.52895,0.24015],[-0.55316,-0.17741],[-0.2906,-0.50301],[0.12261,-0.56783],[0.41164,-0.28883],[0.15802,-0.47739],[-0.15802,-0.47739],[-0.4716,-0.33845],[-0.12231,-0.56745],[0.29029,-0.50268],[0.55261,-0.17768],[0.45598,0.21241],[0.49264,-0.10169],[0.3346,-0.37561],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[14.12132,14.12132],[12.0,15.0],[9.87868,14.12132],[9.0,12.0],[9.87868,9.87868],[12.0,9.0],[14.12132,9.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"slash","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,2.0],[2.0,22.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"sparkles","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.017,2.814],[11.3611,2.22832],[12.0,1.99761],[12.6389,2.22832],[12.983,2.814],[14.034,8.372],[14.58503,9.41497],[15.628,9.966],[21.186,11.017],[21.77168,11.3611],[22.00239,12.0],[21.77168,12.6389],[21.186,12.983],[15.628,14.034],[14.58503,14.58503],[14.034,15.628],[12.983,21.186],[12.6389,21.77168],[12.0,22.00239],[11.3611,21.77168],[11.017,21.186],[9.966,15.628],[9.41497,14.58503],[8.372,14.034],[2.814,12.983],[2.22832,12.6389],[1.99761,12.0],[2.22832,11.3611],[2.814,11.017],[8.372,9.966],[9.41497,9.41497],[9.966,8.372]],"i":[[0.0,0.0],[-0.17948,0.14906],[-0.23331,0.0],[-0.17948,-0.14906],[-0.04284,-0.22934],[0.0,0.0],[-0.28432,-0.28432],[-0.3951,-0.07464],[0.0,0.0],[-0.14906,-0.17948],[0.0,-0.23331],[0.14906,-0.17948],[0.22934,-0.04284],[0.0,0.0],[0.28432,-0.28432],[0.07464,-0.3951],[0.0,0.0],[0.17948,-0.14906],[0.23331,0.0],[0.17948,0.14906],[0.04284,0.22934],[0.0,0.0],[0.28432,0.28432],[0.3951,0.07464],[0.0,0.0],[0.14906,0.17948],[0.0,0.23331],[-0.14906,0.17948],[-0.22934,0.04284],[0.0,0.0],[-0.28432,0.28432],[-0.07464,0.3951]],"o":[[0.04284,-0.22934],[0.17948,-0.14906],[0.23331,0.0],[0.17948,0.14906],[0.0,0.0],[0.07464,0.3951],[0.28432,0.28432],[0.0,0.0],[0.22934,0.04284],[0.14906,0.17948],[0.0,0.23331],[-0.14906,0.17948],[0.0,0.0],[-0.3951,0.07464],[-0.28432,0.28432],[0.0,0.0],[-0.04284,0.22934],[-0.17948,0.14906],[-0.23331,0.0],[-0.17948,-0.14906],[0.0,0.0],[-0.07464,-0.3951],[-0.28432,-0.28432],[0.0,0.0],[-0.22934,-0.04284],[-0.14906,-0.17948],[0.0,-0.23331],[0.14906,-0.17948],[0.0,0.0],[0.3951,-0.07464],[0.28432,-0.28432],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":2,"s":[62.5,62.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":5,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[20.0,2.0],[20.0,6.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,4.0],[18.0,4.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[20,4]},"p":{"a":0,"k":[20,4]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":4,"s":[62.5,62.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":7,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,20.0],[5.41421,21.41421],[4.0,22.0],[2.58579,21.41421],[2.0,20.0],[2.58579,18.58579],[4.0,18.0],[5.41421,18.58579]],"i":[[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493],[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493]],"o":[[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[4,20]},"p":{"a":0,"k":[4,20]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[62.5,62.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"square","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"star","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.525,2.295],[11.80815,2.03605],[12.19185,2.03605],[12.475,2.295],[14.785,6.974],[15.43962,7.75045],[16.38,8.134],[21.546,8.89],[21.88036,9.0791],[21.99916,9.4444],[21.84,9.794],[18.104,13.432],[17.56683,14.29563],[17.493,15.31],[18.375,20.45],[18.29924,20.82824],[17.98713,21.05494],[17.604,21.01],[12.986,18.582],[11.9995,18.33875],[11.013,18.582],[6.396,21.01],[6.01336,21.0542],[5.70185,20.82764],[5.626,20.45],[6.507,15.311],[6.43354,14.29605],[5.896,13.432],[2.16,9.795],[1.9991,9.44472],[2.11808,9.07807],[2.454,8.889],[7.619,8.134],[8.56058,7.75099],[9.216,6.974]],"i":[[0.0,0.0],[-0.12337,0.04791],[-0.12337,-0.04791],[-0.05871,-0.11862],[0.0,0.0],[-0.2778,-0.20203],[-0.33985,-0.04988],[0.0,0.0],[-0.08386,-0.10259],[0.00747,-0.1323],[0.09487,-0.0925],[0.0,0.0],[0.10643,-0.32713],[-0.05794,-0.33909],[0.0,0.0],[0.07185,-0.11205],[0.12878,-0.03367],[0.11749,0.06256],[0.0,0.0],[0.34366,0.0],[0.30427,-0.15977],[0.0,0.0],[0.12854,0.03377],[0.07173,0.11188],[-0.02297,0.1309],[0.0,0.0],[0.10644,0.32733],[0.2466,0.24014],[0.0,0.0],[0.00776,0.13278],[-0.08425,0.10292],[-0.13169,0.01862],[0.0,0.0],[-0.27818,0.20206],[-0.15229,0.30825]],"o":[[0.05871,-0.11862],[0.12337,-0.04791],[0.12337,0.04791],[0.0,0.0],[0.15217,0.30795],[0.2778,0.20203],[0.0,0.0],[0.13114,0.019],[0.08386,0.10259],[-0.00747,0.1323],[0.0,0.0],[-0.24637,0.24009],[-0.10643,0.32713],[0.0,0.0],[0.02315,0.13108],[-0.07185,0.11205],[-0.12878,0.03367],[0.0,0.0],[-0.30427,-0.15977],[-0.34366,0.0],[0.0,0.0],[-0.11745,0.06218],[-0.12854,-0.03377],[-0.07173,-0.11188],[0.0,0.0],[0.05819,-0.33925],[-0.10644,-0.32733],[0.0,0.0],[-0.09567,-0.0924],[-0.00776,-0.13278],[0.08425,-0.10292],[0.0,0.0],[0.34024,-0.0495],[0.27818,-0.20206],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.525,2.295],[11.80815,2.03605],[12.19185,2.03605],[12.475,2.295],[14.785,6.974],[15.43962,7.75045],[16.38,8.134],[21.546,8.89],[21.88036,9.0791],[21.99916,9.4444],[21.84,9.794],[18.104,13.432],[17.56683,14.29563],[17.493,15.31],[18.375,20.45],[18.29924,20.82824],[17.98713,21.05494],[17.604,21.01],[12.986,18.582],[11.9995,18.33875],[11.013,18.582],[6.396,21.01],[6.01336,21.0542],[5.70185,20.82764],[5.626,20.45],[6.507,15.311],[6.43354,14.29605],[5.896,13.432],[2.16,9.795],[1.9991,9.44472],[2.11808,9.07807],[2.454,8.889],[7.619,8.134],[8.56058,7.75099],[9.216,6.974]],"i":[[0.0,0.0],[-0.12337,0.04791],[-0.12337,-0.04791],[-0.05871,-0.11862],[0.0,0.0],[-0.2778,-0.20203],[-0.33985,-0.04988],[0.0,0.0],[-0.08386,-0.10259],[0.00747,-0.1323],[0.09487,-0.0925],[0.0,0.0],[0.10643,-0.32713],[-0.05794,-0.33909],[0.0,0.0],[0.07185,-0.11205],[0.12878,-0.03367],[0.11749,0.06256],[0.0,0.0],[0.34366,0.0],[0.30427,-0.15977],[0.0,0.0],[0.12854,0.03377],[0.07173,0.11188],[-0.02297,0.1309],[0.0,0.0],[0.10644,0.32733],[0.2466,0.24014],[0.0,0.0],[0.00776,0.13278],[-0.08425,0.10292],[-0.13169,0.01862],[0.0,0.0],[-0.27818,0.20206],[-0.15229,0.30825]],"o":[[0.05871,-0.11862],[0.12337,-0.04791],[0.12337,0.04791],[0.0,0.0],[0.15217,0.30795],[0.2778,0.20203],[0.0,0.0],[0.13114,0.019],[0.08386,0.10259],[-0.00747,0.1323],[0.0,0.0],[-0.24637,0.24009],[-0.10643,0.32713],[0.0,0.0],[0.02315,0.13108],[-0.07185,0.11205],[-0.12878,0.03367],[0.0,0.0],[-0.30427,-0.15977],[-0.34366,0.0],[0.0,0.0],[-0.11745,0.06218],[-0.12854,-0.03377],[-0.07173,-0.11188],[0.0,0.0],[0.05819,-0.33925],[-0.10644,-0.32733],[0.0,0.0],[-0.09567,-0.0924],[-0.00776,-0.13278],[0.08425,-0.10292],[0.0,0.0],[0.34024,-0.0495],[0.27818,-0.20206],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":4,"s":[65],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[0.0,0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"strikethrough","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,4.0],[9.0,4.0],[7.21521,4.58751],[6.12996,6.12142],[6.17,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.51659,-0.38184],[0.18813,-0.61422],[-0.21413,-0.60565]],"o":[[0.0,0.0],[-0.64239,-0.00034],[-0.51659,0.38184],[-0.18813,0.61422],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,12.0],[16.82843,13.17157],[18.0,16.0],[16.82843,18.82843],[14.0,20.0],[6.0,20.0]],"i":[[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.74986,-0.74986],[1.06046,0.0],[0.0,0.0]],"o":[[1.06046,0.0],[0.74986,0.74986],[0.0,1.06046],[-0.74986,0.74986],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,12.0],[20.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"tag","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.586,2.586],[11.172,2.0],[4.0,2.0],[2.58579,2.58579],[2.0,4.0],[2.0,11.172],[2.586,12.586],[11.29,21.29],[13.0,21.99514],[14.71,21.29],[21.29,14.71],[21.99514,13.0],[21.29,11.29]],"i":[[0.0,0.0],[0.53019,0.00011],[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37495,-0.37484],[0.0,0.0],[-0.64051,0.0],[-0.45434,0.45147],[0.0,0.0],[0.0,0.64051],[0.45147,0.45434]],"o":[[-0.37484,-0.37495],[0.0,0.0],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.00011,0.53019],[0.0,0.0],[0.45434,0.45147],[0.64051,0.0],[0.0,0.0],[0.45147,-0.45434],[0.0,-0.64051],[0.0,0.0]],"c":true}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,7.5],[7.85355,7.85355],[7.5,8.0],[7.14645,7.85355],[7.0,7.5],[7.14645,7.14645],[7.5,7.0],[7.85355,7.14645]],"i":[[0.0,-0.13256],[0.09373,-0.09373],[0.13256,0.0],[0.09373,0.09373],[0.0,0.13256],[-0.09373,0.09373],[-0.13256,0.0],[-0.09373,-0.09373]],"o":[[0.0,0.13256],[-0.09373,0.09373],[-0.13256,0.0],[-0.09373,-0.09373],[0.0,-0.13256],[0.09373,-0.09373],[0.13256,0.0],[0.09373,0.09373]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"trash-2","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,6.0],[21.0,6.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[5,6]},"p":{"a":1,"k":[{"t":0,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[5,3.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[-10],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[6.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,6.0],[19.0,20.0],[18.41421,21.41421],[17.0,22.0],[7.0,22.0],[5.58579,21.41421],[5.0,20.0],[5.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,6.0],[8.0,4.0],[8.58579,2.58579],[10.0,2.0],[14.0,2.0],[15.41421,2.58579],[16.0,4.0],[16.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[5,6]},"p":{"a":1,"k":[{"t":0,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[5,3.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[-10],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[6.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,11.0],[10.0,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,11.0],[14.0,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"triangle-alert","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[9],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-5.3999999999999995],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.73,18.0],[13.73,4.0],[12.67905,3.10855],[11.30095,3.10855],[10.25,4.0],[2.25,18.0],[2.01343,19.35322],[2.70562,20.53983],[4.0,21.0],[20.0,21.0],[21.28457,20.53121],[21.96768,19.34662]],"i":[[0.23493,0.40691],[0.0,0.0],[0.44475,0.16322],[0.44475,-0.16322],[0.23359,-0.41217],[0.0,0.0],[-0.08337,-0.46475],[-0.36351,-0.30133],[-0.47214,0.00425],[0.0,0.0],[-0.35973,0.30227],[-0.08143,0.46275]],"o":[[0.0,0.0],[-0.23359,-0.41217],[-0.44475,-0.16322],[-0.44475,0.16322],[0.0,0.0],[-0.2361,0.40889],[0.08337,0.46475],[0.36351,0.30133],[0.0,0.0],[0.46986,-0.00048],[0.35973,-0.30227],[0.08143,-0.46275]],"c":true}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,9.0],[12.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,17.0],[12.01,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"type","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,4.0],[12.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,7.0],[4.0,5.0],[4.29289,4.29289],[5.0,4.0],[19.0,4.0],[19.70711,4.29289],[20.0,5.0],[20.0,7.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.18746,0.18746],[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746],[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,20.0],[15.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"undo-2","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,14.0],[4.0,9.0],[9.0,4.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,9.0],[14.5,9.0],[18.38909,10.61091],[20.0,14.5],[18.38909,18.38909],[14.5,20.0],[11.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-1.03105,-1.03105],[0.0,-1.45813],[1.03105,-1.03105],[1.45813,0.0],[0.0,0.0]],"o":[[0.0,0.0],[1.45813,0.0],[1.03105,1.03105],[0.0,1.45813],[-1.03105,1.03105],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"upload","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,3.0],[12.0,15.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[17.0,8.0],[12.0,3.0],[7.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,15.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,15.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"x","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":8,"s":[50],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":14,"s":[-7],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":20,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,6.0],[6.0,18.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,6.0],[18.0,18.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+1
View File
@@ -0,0 +1 @@
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"zap","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-4.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.914,4.0],[15.91644,3.00861],[15.29993,2.23224],[14.33377,2.01001],[13.44,2.439],[4.44,11.439],[4.02923,12.20693],[4.11435,13.07366],[4.66667,13.747],[5.5,14.0],[9.502,14.0],[9.79886,14.09813],[9.97939,14.35341],[9.973,14.666],[8.086,20.0],[8.08368,20.99172],[8.70067,21.76814],[9.66729,21.98987],[10.561,21.56],[19.561,12.56],[19.99968,11.49948],[19.56027,10.43927],[18.5,10.0],[14.503,10.0],[14.20523,9.90219],[14.02418,9.64635],[14.031,9.333]],"i":[[0.0,0.0],[0.11155,0.32112],[0.2875,0.1814],[0.33786,-0.03756],[0.24064,-0.24011],[0.0,0.0],[0.05796,-0.29093],[-0.11345,-0.2741],[-0.24662,-0.16487],[-0.29665,-6e-05],[0.0,0.0],[-0.0859,-0.06359],[-0.03134,-0.10218],[0.03548,-0.10082],[0.0,0.0],[-0.11166,-0.32121],[-0.28769,-0.18133],[-0.33796,0.03781],[-0.2405,0.24042],[0.0,0.0],[0.00014,0.39753],[0.28111,0.28108],[0.39753,8e-05],[0.0,0.0],[0.08619,0.06366],[0.03136,0.10246],[-0.03579,0.101]],"o":[[0.11313,-0.32057],[-0.11155,-0.32112],[-0.2875,-0.1814],[-0.33786,0.03756],[0.0,0.0],[-0.20983,0.2097],[-0.05796,0.29093],[0.11345,0.2741],[0.24662,0.16487],[0.0,0.0],[0.10688,0.00014],[0.0859,0.06359],[0.03134,0.10218],[0.0,0.0],[-0.11317,0.32068],[0.11166,0.32121],[0.28769,0.18133],[0.33796,-0.03781],[0.0,0.0],[0.28092,-0.28127],[-0.00014,-0.39753],[-0.28111,-0.28108],[0.0,0.0],[-0.10716,0.00015],[-0.08619,-0.06366],[-0.03136,-0.10246],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
+33
View File
@@ -0,0 +1,33 @@
//! Windows only: embed the app icon and version info (VERSIONINFO) into `papercraft.exe`, so it
//! shows in Explorer, the taskbar, the Start menu and Alt-Tab.
//!
//! On every other target this does nothing. A missing resource compiler is a warning, so a
//! cross-compile from macOS or Linux still links, unless `PAPERCRAFT_REQUIRE_WINRES=1` turns it
//! into an error (for release builds).
fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=assets/app-icon/papercraft.ico");
println!("cargo:rerun-if-env-changed=PAPERCRAFT_REQUIRE_WINRES");
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") {
return;
}
let mut res = winresource::WindowsResource::new();
res.set_icon("assets/app-icon/papercraft.ico")
.set("ProductName", "PaperCraft")
.set("FileDescription", "PaperCraft infinite canvas")
.set("CompanyName", "PaperCraft Authors")
.set(
"LegalCopyright",
"Copyright (c) the PaperCraft authors. MIT OR Apache-2.0.",
)
.set("OriginalFilename", "papercraft.exe")
.set("InternalName", "papercraft");
if let Err(e) = res.compile() {
if std::env::var_os("PAPERCRAFT_REQUIRE_WINRES").is_some() {
eprintln!("embedding Windows resources failed: {e}");
std::process::exit(1);
}
println!("cargo:warning=papercraft.exe built without icon/version resources: {e}");
}
}
+32
View File
@@ -0,0 +1,32 @@
# Browser build + relay in one image: `papercraft-relay --static` serves web/ and the agent relay.
# craft-libs is a private Gitea dependency, so vendor on the host (authenticated) and pass it in:
# cargo vendor --locked /path/vendor/crates >/dev/null
# docker build -f deploy/Dockerfile --build-context vendor=/path/vendor -t localhost:32000/papercraft-web:<tag> .
FROM rust:slim AS build
# Must match the wasm-bindgen crate in Cargo.lock.
ARG WASM_BINDGEN=0.2.129
RUN rustup target add wasm32-unknown-unknown \
&& apt-get update && apt-get install -y --no-install-recommends binaryen pkg-config libssl-dev \
&& rm -rf /var/lib/apt/lists/* \
&& cargo install wasm-bindgen-cli --version ${WASM_BINDGEN} --locked
COPY --from=vendor crates /vendor
RUN printf '%s\n' \
'[source.crates-io]' 'replace-with = "vendored-sources"' \
'[source."git+https://git.marcospaulo.dev.br/masi/craft-libs?rev=22544b6d619d4f16779b8bdfa3f0b642a86fc065"]' \
'git = "https://git.marcospaulo.dev.br/masi/craft-libs"' \
'rev = "22544b6d619d4f16779b8bdfa3f0b642a86fc065"' 'replace-with = "vendored-sources"' \
'[source.vendored-sources]' 'directory = "/vendor"' > "$CARGO_HOME/config.toml"
WORKDIR /src
COPY . .
RUN sh web/build.sh && cargo build --release --locked --bin papercraft-relay
FROM debian:stable-slim
RUN apt-get update && apt-get install -y --no-install-recommends libssl3 ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --system --uid 10001 papercraft
COPY --from=build /src/target/release/papercraft-relay /usr/local/bin/papercraft-relay
COPY --from=build /src/web/index.html /srv/web/index.html
COPY --from=build /src/web/pkg /srv/web/pkg
USER 10001
EXPOSE 8787
ENTRYPOINT ["papercraft-relay", "--static", "/srv/web", "--data", "/data"]
+86
View File
@@ -0,0 +1,86 @@
# Shared projects live in /data (`--data`) on the HDD: PV /srv/hdd/papercraft, class hdd-storage, Retain (same pattern as actual, kavita, ...).
# --library: every project in /data is listed at /library and synced to every device that opens the site, with no link
# needed. There are no accounts, so the Tailnet-only ingress is the whole access boundary; never expose this publicly.
# Tailnet access (DNS, TLS, ingress) is added with `expose papercraft/papercraft papercraft`; see deploy/README.md.
apiVersion: v1
kind: Namespace
metadata:
name: papercraft
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-hdd-papercraft
spec:
capacity: {storage: 5Gi}
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: hdd-storage
volumeMode: Filesystem
local: {path: /srv/hdd/papercraft}
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- {key: kubernetes.io/hostname, operator: In, values: [kubernets]}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: papercraft-data
namespace: papercraft
spec:
accessModes: [ReadWriteOnce]
storageClassName: hdd-storage
volumeName: pv-hdd-papercraft
resources:
requests: {storage: 5Gi}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: papercraft
namespace: papercraft
spec:
replicas: 1
selector:
matchLabels: {app: papercraft}
template:
metadata:
labels: {app: papercraft}
spec:
securityContext: {fsGroup: 10001}
volumes:
- name: data
persistentVolumeClaim: {claimName: papercraft-data}
containers:
- name: web
image: localhost:32000/papercraft-web:0.2.0-ea6f1b3
args: ["--library", "--allow-origin", "https://papercraft.marcospaulo.dev.br"]
volumeMounts:
- {name: data, mountPath: /data}
ports:
- containerPort: 8787
readinessProbe:
httpGet: {path: /index.html, port: 8787}
livenessProbe:
httpGet: {path: /index.html, port: 8787}
initialDelaySeconds: 10
resources:
requests: {cpu: 20m, memory: 32Mi}
limits: {cpu: 500m, memory: 256Mi}
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities: {drop: [ALL]}
---
apiVersion: v1
kind: Service
metadata:
name: papercraft
namespace: papercraft
spec:
selector: {app: papercraft}
ports:
- port: 80
targetPort: 8787
+93
View File
@@ -0,0 +1,93 @@
# Driving PaperCraft with agents
PaperCraft exposes one set of 53 tools three ways. They all run the same code inside the app, so an agent sees what you see and every call is one undo step.
| Way | Use it when | Needs the app running |
|---|---|---|
| MCP over HTTP, `http://127.0.0.1:29980/mcp` | the agent client speaks MCP (Claude Code, Codex, pi) | yes |
| MCP over stdio, `papercraft-mcp` | the client only starts stdio servers | for calls; `tools/list` works offline |
| Shell, `papercraft-cli` | the agent has a terminal and you want no tool schemas in its context | for `call`; `list`, `schema` and `icons` work offline |
## Install
1. Get the app and the tools: the DMG and the `papercraft-cli` zip from the [releases](https://git.marcospaulo.dev.br/masi/papercraft/releases), or `cargo build --release` (binaries `papercraft`, `papercraft-cli`, `papercraft-mcp` in `target/release/`).
2. Put `papercraft-cli` and `papercraft-mcp` on your `PATH` (for example in `~/.local/bin`).
3. Start PaperCraft and open or create a project. The server starts with the app. `PAPERCRAFT_MCP_PORT` changes the port (the CLI and the bridge read it too); `PAPERCRAFT_MCP=0` turns the server off.
Check the connection:
```sh
papercraft-cli call get_basic_info # project, page, artboards
```
Exit status 1 with "isn't running" means the app is closed or the port differs.
## Register with an agent
Claude Code:
```sh
claude mcp add --transport http --scope user papercraft http://127.0.0.1:29980/mcp
# or through the stdio bridge
claude mcp add --scope user papercraft -- /path/to/papercraft-mcp
```
Codex:
```sh
codex mcp add papercraft --url http://127.0.0.1:29980/mcp
codex mcp add papercraft -- /path/to/papercraft-mcp # stdio alternative
```
pi (and other agents without built-in MCP): use the shell. Tell the agent to run `papercraft-cli list`, then `papercraft-cli schema <tool>` for the tools it needs, and install the skills below.
Any other MCP client: point it at the HTTP URL, or run `papercraft-mcp` as a stdio server.
## Install the skills
Two agent skills in [`skills/`](../skills) teach the workflow and the design rules:
* `papercraft`: how to drive the tools (connection check, build, screenshot, lint, fix loop, naming, layout recipes, known limits).
* `papercraft-design`: how to make the result look good (a direction first, 4/8pt spacing, a type scale, contrast, states, components and tokens).
Link them where your agent looks for skills, for example `ln -s "$PWD/skills/papercraft" ~/.agents/skills/papercraft` (same for `papercraft-design`).
## First prompts
* "In PaperCraft, create a 390×844 mobile artboard and design a sign-in screen. Use variables for every color, build the button as a component, and run `lint_design` before you finish."
* "Add a dark mode to this project: define Light and Dark values for every variable and switch with `set_variable_mode`."
* "Draw a flowchart of our deploy process on a new page, hand-drawn style."
* "Lint this page and fix every warning."
## A session by hand
```sh
export PATH="$PWD/target/release:$PATH"
papercraft-cli call get_basic_info
papercraft-cli call set_variables '{"variables":{"bg":"#1e1e2e","text":"#cdd6f4","accent":"#cba6f7"}}'
papercraft-cli call create_artboard '{"name":"Hello","styles":{"width":"390px","height":"844px","backgroundColor":"var(--bg)","padding":"24px"}}'
# -> {"id":"abc123:1",...}
echo '{"targetNodeId":"abc123:1","mode":"insert-children","html":"<div layer-name=\"Title\" style=\"font-size:32px;font-weight:700;color:var(--text)\">Hello</div>"}' | papercraft-cli call write_html -
papercraft-cli call lint_design '{"nodeId":"abc123:1"}'
papercraft-cli call get_screenshot '{"nodeId":"abc123:1"}' --out hello.png
papercraft-cli call finish_working_on_nodes '{"nodeIds":["abc123:1"]}'
```
Pass JSON inline, or `-` to read it from stdin (best for HTML, which is full of quotes; `jq -Rs` can wrap a file into the right JSON). Text results go to stdout. Images are saved to `--out` (default `<tool>.png`) and the path is printed.
## Safety
The server listens on loopback only, rejects requests that carry an `Origin` header (browsers) and foreign `Host` headers. Anything on your machine that can reach `127.0.0.1:29980` can edit the open project, so do not forward the port. Undo (⌘Z, or the `undo` tool) reverts any agent edit.
## Runs and review
Editing calls are grouped into an agent run. A run ends after 30 seconds without an editing call, when the project changes, or when `finish_working_on_nodes` is called. Before each page's first edit in a run, PaperCraft saves an auto-version named `Before agent run N`. Call `finish_working_on_nodes` at the end of your work so the run gets a useful title and ends right away.
The Agent view lists runs and lets you review changes, revert a whole run, undo one change, or accept all changes. Review also marks changes on the canvas; a toast offers Review and Revert when a run finishes. The command palette has `Review last agent run` and `Revert last agent run`. Run records live under `runs/` in the project folder; PaperCraft keeps the newest 50 runs.
## Reference
* [Tool reference](../skills/papercraft/references/tools.md), generated from `papercraft-cli schema`.
* [Design systems](design-system.md): variables, components, icons, lint.
* [Design-system packages](design-system-packages.md): importing and exporting an OpenDesign package.
* `papercraft-cli --help`-style usage: run `papercraft-cli` with no arguments.
+143
View File
@@ -0,0 +1,143 @@
# Design-system packages
PaperCraft can read and write **OpenDesign design-system packages**: a folder that holds a
`manifest.json`, a `tokens.css` and (usually) a `DESIGN.md`. They are the exchange format for
a design system — one design system in, the same design system out.
```text
my-system/
manifest.json what the package is
tokens.css the colors, modes and tokens
DESIGN.md the prose about the brand
```
The two tools are `import_design_system` and `export_design_system`.
```sh
papercraft-cli call import_design_system '{"path":"/path/to/my-system"}'
papercraft-cli call export_design_system '{"path":"/path/to/my-system"}'
```
## The format
### `manifest.json`
```json
{
"schemaVersion": "od-design-system-project/v1",
"id": "my-system",
"name": "My System",
"category": "product",
"description": "A small system",
"source": { "type": "github", "url": "https://example.com/system" },
"files": { "design": "DESIGN.md", "tokens": "tokens.css" },
"importMode": "hybrid"
}
```
| Key | Meaning |
|---|---|
| `schemaVersion` | `od-design-system-project/v1`. Another value is refused. |
| `id` | The slug of the folder: lowercase letters, digits and dashes. |
| `name`, `category`, `description` | What the system is. |
| `source` | Where it came from: `bundled`, `local`, `github` or `shadcn`. |
| `files` | The files of the package. `design` and `tokens` are required; `designTokens`, `tailwind` and `components` are optional. |
| `assetsDir`, `previewDir`, `usage`, `componentsManifest`, `importMode`, `craft`, `fonts`, `preview`, `sourceFiles` | Optional extras; they are kept as they are. |
`importMode` is `normalized`, `hybrid` or `verbatim`.
### `tokens.css`
Plain CSS custom properties. The `:root` block holds the base values, every
`[data-theme="name"]` block the values of one mode:
```css
:root {
--bg: #ffffff;
--accent: #cba6f7;
--spacing-md: 16px;
}
[data-theme="Dark"] {
--bg: #1e1e2e;
--accent: #89b4fa;
}
```
### `DESIGN.md`
Prose about the brand. PaperCraft reads it (the import reports that a package has one) and
writes a short summary of the variables, modes and tokens on export.
## What PaperCraft does with it
| Package | PaperCraft |
|---|---|
| a hex color in `:root` | a **variable** (`--bg`), the thing a fill follows |
| any other value in `:root` | a **token** (`--spacing-md`), substituted into styles when they are written |
| a hex color in `[data-theme="Dark"]` | the **mode** `Dark` |
The rules, in full:
* **Colors are hex only.** PaperCraft colors are `#rrggbb` / `#rrggbbaa`. A value PaperCraft
cannot hold — an `oklch()`, an `rgb()`, a named color — is kept as a token with the value
as it is, so nothing is lost.
* **The import replaces** the variables, the modes and the tokens of the project, on every
page, in one undo step (like `set_variables`). Undo brings the old ones back.
* **The base theme stays live.** After an import no mode is active, so the `:root` values
are the ones on the canvas. Pick another mode with `set_variable_mode`.
* **Names are made CSS-safe**: letters, digits, `-` and `_`. Everything else becomes `-`, so
`--Brand Color` is imported as `--Brand-Color`.
* **A mode holds colors only.** A size inside a `[data-theme]` block cannot be stored per
mode, so it becomes a plain token.
* **A package is identified by its folder.** The `id` in the manifest must be the slug of the
folder it lives in (`my-system`). The export writes the slug of the target folder as the
id.
## The tools
### `import_design_system`
```sh
papercraft-cli call import_design_system '{"path":"/path/to/my-system"}'
```
| Argument | Type | Notes |
|---|---|---|
| `path` | string | The folder of the package. Required. |
| `pageId` | string | Optional. The design system is project-wide, so it lands on every page. |
It answers with what came in:
```json
{
"package": { "id": "my-system", "name": "My System", "category": "product" },
"variables": 2, "modes": 1, "tokens": 1,
"pages": 3, "fillsUpdated": 4, "design": true
}
```
A malformed package is an error, never a crash: a broken `manifest.json`, a missing
`tokens.css`, an id that is not a slug or a `schemaVersion` PaperCraft does not know all come
back as a message.
### `export_design_system`
```sh
papercraft-cli call export_design_system '{"path":"/path/to/my-system"}'
```
| Argument | Type | Notes |
|---|---|---|
| `path` | string | The folder to write the package into. Created if it is not there. Required. |
| `pageId` | string | Optional. The page whose design system is written. |
It writes `manifest.json`, `tokens.css` and `DESIGN.md` and answers with their paths. The
`tokens.css` is the same shape the import reads, so a package survives the round trip.
## Attribution
The package format is the one published by
[OpenDesign](https://github.com/nexu-io/open-design) (Apache-2.0). PaperCraft reimplements
the format from its description; no file of that project is copied. See
[THIRD_PARTY.md](../THIRD_PARTY.md).
+78
View File
@@ -0,0 +1,78 @@
# Design systems in PaperCraft
A PaperCraft project can hold a small design system: color variables, components with instances, and icon sets. Today these are built and managed through the tools (MCP or `papercraft-cli`); the editor shows the results but has no panel for them yet (see [ROADMAP.md](../ROADMAP.md)).
## Variables
Named colors per project. Define them once, use them as `var(--name)`:
```sh
papercraft-cli call set_variables '{"variables":{"surface":"#313244","accent":"#cba6f7","on-accent":"#11111b"}}'
```
* Use `var(--name)` in `write_html`, `update_styles` and `create_artboard` for `background`, `backgroundColor` and `color`. The fill stays linked and the link is saved in the file.
* Calling `set_variables` again with a new value moves every linked fill, on every page, in one undo step.
* **Modes.** `set_variables {"mode":"Dark", ...}` stores one set of values for a mode; define another mode the same way. The first mode you define is active. `set_variable_mode {"mode":"Light"}` switches the whole project.
* `get_variables` lists the variables and modes. With `"format":"css"` it returns a `:root { --name: #hex }` block, with `"json"` a design-tokens object (`{"accent":{"$type":"color","$value":"#cba6f7"}}`).
* **Limits.** Colors only. Fills and text color follow variables; strokes and gradients get the resolved color at write time and do not follow later changes. No spacing, radius or font-size variables yet.
Naming that works: roles, not hues (`surface`, `text-muted`, `accent`, `on-accent`, `danger`), so a mode can change the value without changing the meaning.
## Components and instances
```sh
papercraft-cli call create_component '{"nodeId":"<frame>","name":"Button / Primary"}'
papercraft-cli call create_instance '{"componentId":"<id>","parentId":"<frame>","name":"Button / Sign in"}'
papercraft-cli call set_text_content '{"updates":[{"nodeId":"<label layer id from create_instance>","textContent":"Sign in"}]}'
```
* Build the main component as a frame (usually its own artboard), then convert it. Name it `Component / Variant`.
* `create_instance` returns the instance id and its layers, so you can set text and styles on them. Changes made through `set_text_content` or `update_styles` on an instance are recorded as overrides; everything else follows the main component.
* In `write_html`, `<x-paper-instance component-id="<id>" layer-name="Button / Save"/>` places an instance inline.
* `get_components` lists main components and how many instances each has.
* **Limits.** Components and their instances must be on the same page. No variants or properties: model variants as separate components (`Button / Primary`, `Button / Secondary`). In the editor, detach with ⌘⌥B; there is no detach or swap tool.
## Icons
`papercraft-cli icons add phosphor lucide` downloads sets from the npm registry into the icons folder (`<data dir>/papercraft/icons/<set>/`, or `$PAPERCRAFT_ICONS`), each with its license file. Sets: Lucide (ISC), Tabler (MIT), Phosphor (MIT), Heroicons (MIT), Material Symbols (Apache-2.0). Find names with `papercraft-cli icons search arrow left` (offline) or the `search_icons` tool, then place one in `write_html`:
```html
<x-paper-icon name="phosphor:gear" size="20" color="var(--accent)"/>
```
Fill-based sets (Phosphor, Material) follow variables; Lucide is stroke-based and keeps a fixed color.
> **Known limitation.** An icon's *stroke* color is frozen at import time: the value of the
> variable is baked into the stroke, so a stroke-based icon (Lucide, Tabler, Heroicons) does
> not follow the variable when it changes later — only fills keep the link. Letting strokes
> follow a variable needs a `stroke_var` field on the style, which changes the saved page
> format, so it is on the backlog. A `var(--x)` that does not exist is reported as a warning
> and the icon keeps the color it inherits.
## Lint
`lint_design` checks a subtree or the page and returns issues with a rule, a severity and a fix:
| Rule | Severity | Checks |
|---|---|---|
| `contrast` | error | WCAG 4.5:1 for text, 3:1 for large text (24px+, or 18.66px+ bold), against the nearest opaque fill behind it |
| `text-size` | warning | text under 12px |
| `type-scale` | info | font size not on the scale (default 12, 14, 16, 20, 24, 32, 40, 48, 64; pass `scale` to change) |
| `spacing-grid` | warning | gap or padding not a multiple of 4 |
| `touch-target` | warning | a frame named `Button…`, `Tab /…` or `Tab Bar /…` under 44px tall |
| `layer-name` | warning | default names (Frame, Rectangle, Group...) on layers with children |
| `hard-coded-color` | warning, info | a literal color that equals a variable (warning), or a literal used repeatedly when variables exist (info) |
Instances are skipped (their main component is linted). The rules are conventions, not law: pass `scale` to match your own type scale and ignore `info` items you disagree with. Lint does not judge taste; always look at `get_screenshot` too.
## Packages
A design system can travel as an **OpenDesign design-system package**: a folder with
`manifest.json`, `tokens.css` and `DESIGN.md`. `import_design_system` reads one into the
project (colors become variables, `[data-theme]` blocks become modes, everything else becomes
a token) and `export_design_system` writes one back. The format, the rules and the tools are
in [design-system-packages.md](design-system-packages.md).
## Worked example
[`examples/taskflow.py`](../examples/taskflow.py) builds an 8-screen app: a Catppuccin theme as variables (the only place hex appears), components for buttons, fields, chips, task rows, toggles and tab bars, Phosphor icons, and a design-system page of swatches. Run it against the running app after `papercraft-cli icons add phosphor`.
+25
View File
@@ -0,0 +1,25 @@
# Feature ideas
Ranked by value for the effort. Done items say where.
## Done
* Prototype links: click a layer in Present mode to jump to a frame (inspector, Prototype tab).
* Drop-shadow effect in the inspector.
* Saved versions with rename, restore, delete (also in the browser).
* Comments filters, reopen, delete; agent activity log with failures, copy agent URL.
* Agent activity pill and canvas glow while an agent works; layers pop in.
* Merge of concurrent edits to one shared page (`src/merge.rs`, `src/sync.rs`).
* Interface scale in Settings and the command palette (native).
* Export presets (inspector Export "+").
* Auto versions before agent edits: each agent run snapshots edited pages and can be reviewed or reverted (`src/runs.rs`, Agent view).
## Next
1. **Presence on shared projects**: show who else is in the file (coloured cursors and selection outlines). NotesCraft `crates/collab` already has rooms and presence; reuse once it is a shared crate.
2. **Version compare**: pick two saved versions and show a diff overlay (added, changed, removed layers) using the id-paired `diff_pages` in `src/mcp/diff.rs`; compare UI is still todo.
4. **Smart transitions in Present mode**: animate matching layers (same name) between frames instead of cutting.
5. **Hover and pressed states for components**: variants (`Button / Primary / Hover`) switched in Present mode on pointer events.
6. **Layer blur and background blur**: needs a renderer pass; unlocks glass effects and the Layer "+" in the design.
7. **Comment threads with replies from people, mentions, and a canvas pin that opens the thread**.
8. **Flatten menus into icon toolbars**: the Share menu and the folded Menu are flat lists; next is an icon rail for the most used actions with labels on hover.
9. **Window**: Windows asks the system for rounded corners and keeps the shadow. On Linux the window manager (or the Wayland client-side frame) draws the frame, and it is round on GNOME and KDE. A frame drawn by the app needs three things that cannot be checked without a Linux desktop: a transparent surface, a paint callback that clears the four corners with replace blending (egui cannot erase pixels it has already drawn), and its own edge resizing through `drag_resize_window`. Not built for that reason.
10. **One design-system package per brand** imported by every app's design file, plus a token export that generates the theme code (see `docs/shared-libs.md`).
Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 528 KiB

After

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 KiB

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 KiB

After

Width:  |  Height:  |  Size: 593 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Some files were not shown because too many files have changed in this diff Show More